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#也被一部分人认为是写在字符串里的代码,这就是一种立场。不要作互斥立场的争论,那毫无心义,只有当咱们立场一致,争论才能带来思惟的碰撞。

相关文章
相关标签/搜索