Unity3D熱更新全書-腳本(一) 初識腳本

開篇以前仍是要先說明,這是一份給經驗並不豐富的程序員閱讀的文字。程序員

有需求、有疑惑,往下看。spa

第一個問題什麼是腳本?程序和腳本如何區分?咱們給Unity編寫的組件是程序仍是腳本?ci

這些問題本文無心去解答,由於其中混合着太多有立場的東西,站在不一樣的立場會有不一樣的見解,這其中的矛盾不是簡單能夠調和的。資源

只要提出一個觀點,就很容易陷入語言大戰的泥潭。字符串

咱們不妨從另外一個角度來思考,爲何要分程序和腳本,是爲了找一條分界線。it

這條分界線叫作靈活。table

咱們這個專題的出發點是探討Unity3D客戶端資源更新,已這個出發點劃條線,不靈活的站左邊,靈活的站右邊。配置

試思考以下情景下載

一個玩家,初始HP200,初始MP200程序

咱們採用兩個方案來完成

左邊 右邊
組件裏直接寫代碼
Player.HP=200;
Player.MP=200;
寫一個配置文件Player.InI
HP=200
MP=200

組件裏寫代碼
Player.HP = GetInIValue(「HP」);
Player.MP=GetInIValue(「MP」);

當策劃(萬惡的策劃,本篇的主要反面人物)說哎呀,不行,玩家的初始HP要改爲500。

從咱們的出發點來衡量:

左邊,災難,玩家要再經歷一次下載安裝客戶端的煎熬。

右邊,只要讓Player.InI更新到客戶端,這就能夠在玩家重啓客戶端的時候完成。

左邊,不符合資源更新的精神。

右邊,符合。

此時咱們就認爲右邊的Player.Ini是一種腳本,咱們所稱的腳本就是可讓邏輯發生變化的東西。

這時候有一些經驗的人可能會站出來反對:那是配置文件,算什麼腳本,腳本要邏輯的。

反對有效,讓咱們更進一步

Player.InI

HP = (today==Monday)?100:200

MP =(today==Sunday)?400:200

如此,你還會認爲配置文件和腳本是徹底不相干的東西麼?

若是你對三目運算符不是那麼熟悉,能夠看看展開的寫法

if(today==Monday)HP=100

else HP=200;

if(today==Sunday)MP=400

else MP=200;

經過這個代碼能夠看出策劃如此作的用意:咱們的主人公有周一恐懼症,週一HP減半,週日太High,估計是個碼農,週六加了一天班,週日開心的MP翻倍。

只要咱們假定策劃的這種點子根本停不下來,隔三差五就要改一次。

你是否是會產生一種強烈的衝動:巴不得把全部代碼寫在配置文件的字符串裏

這就是腳本,寫在字符串裏的代碼。只由於字符串夠靈活。

執行字符串裏的代碼,有個叫法,叫作Eval。

咱們將在下一篇來點實例。

順便一提C#也被一部分人認爲是寫在字符串裏的代碼,這就是一種立場。不要作互斥立場的爭論,那毫無心義,只有當咱們立場一致,爭論才能帶來思惟的碰撞。

相關文章
相關標籤/搜索