為什麼unity中的C#代碼被稱為Scripts?ue4中的C++代碼有這種說法嗎


對遊戲開發而言,是不是"Scripts"取決於用途而不是語言,所以UE4中的C++也是一種"Scripts",與Unity中的C#的差別只在"語言不同"。


有一本書 Unreal Engine 4 Scripting with C++ Cookbook,而且也是有 GC 的,對於 gameplay 而言都可以稱腳本。

區別:

  • UE C++ 直接編譯為目標平台可執行,引擎、插件、中間件、gameplay 代碼都直接為 C++,對底層控制力強,不需要跨越腳本/native 邊界,統一為 C++。gameplay 迭代速度慢,也會容易 crash。
  • Unity C# 要麼需要平台有腳本運行時,要麼 IL2CPP 多一步,對底層控制力弱,但是你享受了快速 gameplay 迭代。引擎組件也有 C# 化趨勢,統一向 C#,提供高效編譯機制,確保接近 C++ 的性能。插件/中間件的集成,多一些 indirection,但是像 SRP 那樣,關鍵的多線程渲染還是發生在 native 層面,對整體性能還是沒什麼影響。

  • 沒區別,都是編程,編程語言不一樣罷了。

    Flash的ActionScript也是被叫做腳本語言,但它也是編程,一樣需要面向對象的語法。

    其實,也沒人在意用什麼語言,最終贏得口碑的,是最後出來的結果,蘋果Objective-C的口碑夠糟糕的了,但是不影響開發者對它的熱情。


    本質上都是編程語言,它們的作用單就遊戲引擎來說,大體上都是一樣的(這裡不討論深層次不同,百度一下即可),基本都是服務於遊戲邏輯的,前期你可以認為他們是一回事,不同平台用不同的語言很正常,就比如英語和中文一樣,都是為了與人交流,編程語言正是與計算機交流的語言。


    unity的c#和ue的c++都是遵守相應需要標準的,具體版本隨引擎版本迭代有所變化,但總之語法上和標準的C#或c++沒有什麼不同。之所以叫腳本,我理解,遊戲以外的C#c++都是通過main這樣的主函數啟動,是"程序調用資源"而unity和ue遊戲引擎里代碼並沒有main這樣的程序入口,都是掛在資源上調用,有點"資源調用代碼"的意思,所以說是腳本

    遊戲腳本就好比電影腳本。它是用來在遊戲引擎之上,表達出遊戲的劇情、玩法等邏輯。這裡的腳本這個詞不是腳本語言的意思。


    推薦閱讀:
    相关文章