搜索

搜索

在线
客服

在线客服服务时间: 9:00-20:00

选择下列客服马上在线沟通:

快速
发帖

客服
热线

021-50343443
7*8小时客服服务热线

关注
微信

关注微信公众号
顶部
开启左侧

[插件脚本] 零起点入门MAXScript(第八节)

[复制链接]
有空 发表于 2015-12-2 15:09:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
全局变量,就是整个脚本都可以用的一个变量。
局部变量,就是指在一定范围才能使用的变量。
怎么定义呢?
例子:
rollout 自由者cg "U1" width:162 height:122
(
        button btn4 "测一" pos:[18,15] width:125 height:39
        button btn5 "测二" pos:[18,69] width:125 height:39
        on btn4 pressed  do
(
       
        )
        on btn5 pressed  do
(
       
        )
)
createdialog 自由者cg
运行后得到如下界面:
1.jpg


这里我们设置了两个按钮,来做测试。
现在加两个变量,如下:
global str1 = "全局变量"
rollout 自由者cg "U1" width:162 height:122
(
        local str2 = "局部变量"
        button btn4 "测一" pos:[18,15] width:125 height:39
        button btn5 "测二" pos:[18,69] width:125 height:39
        on btn4 pressed  do
(
        messagebox str1
        )
        on btn5 pressed  do
(
        messagebox str2
        )
)
createdialog 自由者cg


上面命名有两个变量,str1和str2,
凡是用global申明的变量名,为全局变量,整个脚本的任何地方都能对其进行修改调用。
凡是用local申明的变量名,为局部变量,它只能在当前所在范围(可以理解为当前语句的括号内使用)。
上面有一句:messagebox str1,这句是生成一个弹出信息窗口,简单用法是messagebox <字符串>


运行上面的脚本,就会看到结果,试试。


下面改一下代码:
global str1 = "全局变量"
rollout 自由者cg "U1" width:162 height:122
(
        local str2 = "局部变量"
        global str4 = "这个呢?"
        button btn4 "测一" pos:[18,15] width:125 height:39
        button btn5 "测二" pos:[18,69] width:125 height:39
        on btn4 pressed  do
(
        messagebox str1
        )
        on btn5 pressed  do
(
        createdialog test2
        )
)
rollout test2 "U2" width:162 height:57
(
        local str5 = "测五"
        button btn8 "测六" pos:[22,13] width:125 height:39
        on btn8 pressed do
(
        messagebox str4
)
)
createdialog 自由者cg
运行试一下,发现什么?点击测一,正确,点击测二,出错了。为什么呢?因为程序从上到下没有对test2进行过定义,所以程序运行出错。现在再点击一下测二,结果又是对的了,这又是为什么?因为当你运行一次后,test2就当成了全局变量定义了,还记录在内存里,下次可以继续用。现在要避免这种情况怎么办?很简单,只需要改一下:
global str1 = "全局变量",test2
这样,无论怎么运行都不会出错。因为test2已经定义为全局变量。在有申明global或local的时候,可以用半角逗号来分隔每一个定义的变量。再回来看,刚才那个程序里面,rollout test2里面调用了rollout unnamedRollout里面一个变量str4,这样也没出错,因为str4前面用global申明了,全局变量global可以在任意位置定义。但是如果你把test2里面的str4改成str2就不行了,因为str2只能用在unnameRollout里面。除非,你在test2里面再定义一次str2。
其实,脚本能自动识别一个变量是全局是局部变量,如果我们不用global或local也可以。脚本就会根据变量出现的位置自动判断它是全局还是局部变量。
如:
str1 = "全局变量"; test2


注意这里变量不能用逗号分隔,没有申明,变量赋值就是单独的语句,要么换行写,要么用;号表示语句结尾。去年所有申明,那么刚才那个str4就变成了局部变量了,因为它在里面。而rollout的名称 自由者cg 和 test2都默认为全局变量。
全局变量可以通用,这个概念是,只要你运行过脚本的3dmax没有关闭,那么全局变量就还在内存里,如果别人的脚本跟你用的全局变量名相同,就有可能出现错误。所以建议变量命名时,形成自己独有的习惯,尽量不要和别人的重复,而且变量名最好一看就大概明白含义。


注释,每个程序都有的一种重要功能,用来解释代码,没有注释的程序代码是不完整的。
注释方法:
一种是用英文的两个"-"中划线表示,如:--这是一个注释。
另一种与c++相同:/*注释内容*/
两种的区别是"--"可以随意增加,更方便小型注释;/*......*/适用于大篇注释。


注释过的程序,方便自己记起代码的功能,同时也能让他人知道代码的意思。




——————本节完——————

出售提现 接单赚钱 积分转换 推广 充值 赞助VIP 新手帮助
 
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 淡定 神作 路过 感恩
您需要登录后才可以回帖 登录 | 现在注册

本版积分规则


0关注

3粉丝

142帖子

排行榜
作者专栏

精品资源出售,数据快速变现

项目交易合作,保障双方权益

COLOR旗下综合交易服务平台

  • 公众号

    官方微信公众号,欢迎您的加入。

    扫码关注
  • 微信客服

    微信客服,有问题请找我。

    扫码联系
  • QQ客服
广告图片

自由者CG期待您来加入

Copyright   ©2014-现在  自由者CGPowered by©Discuz!技术支持:迪恩网络    ( 沪ICP备11008872号 )