变量这个玩意吧,说简单也简单,但是说复杂时有的时候比J还复杂。 因为,只会用T的人大部分是因为没有编程基础,所以T中某些局限对他们来说完全是莫名其妙! 这一课的首先,我来说一个点变量的问题!
Q1:点变量,又是点变量!不就是排泄吗? 看到这里,你觉得我又想讲排泄了是吧?恭喜你答错了! 嘛,不得不说,不掌握点变量排泄的话,你根本不能称作会玩WE 但是, Tip1-1:点变量的问题,不仅仅是排泄! 我要讲的是,一个在制作位移技能时出现的问题。 过分的是,这个问题不见得你会遇到,但是一旦遇到很可能让你起初完全摸不着头脑! 曾经给一位朋友解释了很久这个问题...... 那就是,设置点A=点B这句语句! 请看这段语句
猜猜看,萝莉控能够成功地来到小萝莉的旁边么? 答案是否定的。萝莉控会原地不动 如果这么写
萝莉控会跑到大叔的旁边! 如果是编程者应该已经知道了,这是所谓的按地址传递。 设置点B=点A这句语句,实际上是把点B直接“指向”点A 随后,对点A进行的移动和清除操作,对点B都会同样生效! 打个简单的比方,你可以把点变量当做一个门牌而已! “设置点变量”这句语句,就是一个挂门牌的动作。 如果是【设置点变量=一个真实存在的点(比如某个单位的位置啦,某个区域的中心点啦)】这样的句子,就是相当于把现在的这个人抓住,关进房子里。 然后在门口挂上一个牌~ 比如诱拐了一个萝莉,在门口挂上一个牌子A(设置a=萝莉的位置) 如果是【设置点变量=另一个点变量】,只是相当于在那间房子上挂上另一个牌子! 比如在上面那间房子门口再挂上一个牌子B(设置b=a) 而对点的移动和清除操作,是直接对房子里的人本身做操作的!【实际上,因为如此才能排泄点!】
如果还是难以理解,不妨不考虑点变量,而是考虑单位变量! 设置N=一个步兵 设置M=N 杀死N 那么,M此时是死是活?
房子里本来是个小萝莉,门口挂着两个牌子A和B 然后,我发布命令:把A换成大叔!(移动a到大叔的位置) 天灵灵,地灵灵,房子里的萝莉变成了大叔! 萝莉控们听说了这个消息,自然不会去动A。 但是,这时候有人开始打B的主意了!他们淫笑着推开房门!(移动单位到b) 很遗憾,虽然牌子不一样,房子还是那个房子。 于是,门里面是同样淫笑着的大叔。惨剧。
如何避免这种惨剧呢?请看图。
在这张图里,虽然还是在萝莉的房间门口挂了两个牌子 (设置a=萝莉的位置) (设置b=a) 随后的命令却有了变化!!(设置a到大叔的位置) 根据上面的说明我们已经知道了,这句命令其实是抓住一个大叔关进另外的一间房子里,随后把牌子A改挂到那个房子上! 那么,萝莉就会好好呆在房间里啦!
而且,因为牌子A已经改挂到大叔那间房子上了 随后不管你把大叔怎么样,都不会影响到萝莉了! 请看,我们多加了一句“清除A里的人”,萝莉控打开房间B却依然能看见俏生生的萝莉 大叔你就安息吧...........
而另一种写法,萝莉控依然会成功找到萝莉!
奥妙在于第二句 (设置b=坐标点(a的x坐标,a的y坐标)) 坐标点(a的x坐标,a的y坐标)不再是一个变量了,而是一个真实的点! 也就是说,这句是把萝莉复制出来一份,扔进新的房间里,挂上牌子B 随后,虽然A房间里的萝莉变成大叔了,但是萝莉控依然在房间B里找到了俏生生的萝莉~
点的传递,就这么简单.............
Q2:为啥"指定单位事件"中,不能把指定单位改成一个变量呢?
其实,这牵涉到基础的触发机制的问题。 上面已经说过,变量(不仅仅是点变量)只是一个牌子而已。 而在触发的条件里,所使用的必须是一个实在的房子里的东西,不能只是一个门牌! Tip2-1:事件中必须使用常量! 也许你已经开始抱怨了,这种对房子里的人的操作这么麻烦?我们直接全部只换牌子不动房子里的人不就轻松了么? 但其实,有些时候我们反而希望能够动到房子里的人,比如写触发事件的时候。 可惜,事与愿违啊! 细心的你也许已经注意到了老狼给我们的这个说明
这是什么意思呢? 非常简单,也就是说,对于可以引发触发的“事件”,一经注册就不会被改变了! 假如你想要做一个被动技能,让大法师的魔法值一旦低于一半就会触发,该怎么写事件呢? 这是一个最容易想到的写法
遗憾的是,这是完全行不通的。 后半部分的那一整个表达式【大魔法师的魔法值*0.5】其实就是所谓的参照值。 在地图载入,为这个触发注册事件时,参照值就已经固定了。 假设大法师初始的最大魔法值为 500,那么参照值【大魔法师的魔法值*0.5】=250 事件就是:【大魔法师的魔法值低于250时】 一开始,这个事件是正确的。 然而,我们的大法师怎么可能保持出生的样子呢?他要去穿上装备,升升级! 于是现在大法师的最大魔法师变成2000了。 按理说,他的魔法值低于1000时触发该启动的。 然而,实际上触发的事件依然是:【大魔法师的魔法值低于250时】 根本无法变动! 所以说,实际上参照值是一个不会变动的常量,是不能使用变量的! 因此,在设置参照值时,实际上根本就不能设置为变量。
这时候,还记得第二课中,减少受到伤害的心灵之火问题的好学生们提问了!
Q3:可是在触发动作里“添加事件”时,参照值是可以为变量的啊! 是的,恭喜你答对了!
Tip3-1:添加事件里的变量还是常量! 然而,实际上这里的“变量”所代表的只是添加事件时,触发单位所代表的值而已,是一个常量。 假如r现在是200,那么你添加的是“大法师的魔法值小于200点”,而不是“大法师的魔法值小于r点” 假如unit现在是大法师,那么你添加的是“大法师接受伤害”,而不是“unit接受伤害”
添加了事件后,r和unit不管再怎么变化,都不会影响到你添加了事件的那个触发的发动条件了!
有人问过,减少伤害的心灵之火为什么不这么做?
原因就是,地图初始化时,unit是“没有单位” 为t2所添加的事件其实是“没有单位接受伤害” 随后不管unit变成什么,t2的事件都是 “没有单位接受伤害” 于是华丽滴什么事件都不会发生了!
|