zoukankan      html  css  js  c++  java
  • Unity3D热更新全书-脚本(一) 初识脚本

    原地址:http://www.cnblogs.com/crazylights/p/3886023.html

    http://blog.csdn.net/lights/article/details/38758997

    开篇之前还是要先说明,这是一份给经验并不丰富的程序员阅读的文字。

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

    第一个问题什么是脚本?程序和脚本如何区分?我们给Unity编写的组件是程序还是脚本?

    这些问题本文无意去解答,因为其中混合着太多有立场的东西,站在不同的立场会有不同的看法,这其中的矛盾不是简单可以调和的。

    只要提出一个观点,就很容易陷入语言大战的泥潭。

    我们不妨从另一个角度来思考,为什么要分程序和脚本,是为了找一条分界线。

    这条分界线叫做灵活。

    我们这个专题的出发点是探讨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#也被一部分人认为是写在字符串里的代码,这就是一种立场。不要做互斥立场的争论,那毫无意义,只有当我们立场一致,争论才能带来思维的碰撞。

  • 相关阅读:
    Web CI/CD Continuous Integration / Continuous Delivery / Continuous Deployment
    hd + TP-Link Switch / wanzhaojiaohuanji / spf+ / TL-ST1008F / TL-ST5016F
    彻底理解js中this的指向,不必硬背(转)
    H5本地存储(转)
    jquery获得 当前页面url的变量
    js中实现base64加密、解密
    项目中easyui-tooltip提示消息运用
    Jquery生成二维码(微信中长按图片识别二维码功能)
    [hdu 3068] Manacher算法O(n)最长回文子串
    Hello world !
  • 原文地址:https://www.cnblogs.com/123ing/p/3901606.html
Copyright © 2011-2022 走看看