找回密码
 点一下
查看: 1116|回复: 1

关于变量和触发上限,这个我必须得跳出来说一下

[复制链接]
发表于 2012-6-22 22:39:06 | 显示全部楼层 |阅读模式
  第一,很多人都错误理解了这个问题
    数组 大小  设置 大小那个东西 你可以无视它,记住了,完全无视 ,无论你添100还是1000000,没有区别,OK
initial globals函数会给所有数组赋初值,所以大家写大小的时候,呵呵全部写成1吧,记住了,这样效率高些啊。
  记住了,把他写成1,无论你自己是想要多大,写成1




   ..    那最好的解决方案,不就是把大小写成1,反正没影响啊,哈哈  ,不过有潜在影响,不推荐啊
    ...... 因为没有被赋值而使用的话,呵呵,魔兽是不会崩溃啊 ,只不过接在这一句后面的代码通通无效了,哈哈
  ....(我习惯不好,写jass常忘了这个问题 ........)

   .........




所以说,地图的问题不是由这个引起的,只是要告诉大家
  数组有最大上限  8192, 记住了,不过一般都不会到8192,这个8192指的是最多8192个数据,所以说最大的下标是8191.魔兽的数组索引是从0开始的
  大家看过Jass就知道,他声明数组时,是不带大小的
      比如
   [jass]
   integer array i
  [/jass]
  而导致触发执行不了的原因是变量总数超过某一个数值,难道也是8192,我不知道啦,至于为什么会有这个原因,那是因为魔兽这个游戏真心很老了...
  你们懂的。
      变量数+ 触发数  大于某一个数值  就会导致多出来的那部分会被无视
(实际上,你没写一个触发,WE自动生成了一个触发变量,
事实上,就是 说变量总素大于某一个数了)
  至于这个变量,是指的全局变量,我不大清楚局部变量会有上限没,应该是有的,因为魔兽是基于虚拟机
  至于对于你们的变量数和触发数大到一定程度的人,建议改学jass,将大量的  临时触发器一次性搞定,只在一个触发里用的变量改局部变量,如果你害怕jass之类的,那么给你一个建议,YDWE有声明局部变量的动作,你可以去使用YDWE。
   让人吃惊的是,YDWE的局部变量十分强大
   比如可以这样
    逆天-声明局部变量 整数 aa
   选取单位组g做动作
    动作-输出局部变量aa的值
  这实在是吊爆了,可能长期使用WE来声明变量的不觉得,因为你们一直就是这样用的,不过这在jass里可行不同,大家只能借组hashtable  
   那,你可能会说,那jass怎么这么渣,反正不懂函数是干什么的人,永远不会明白为什么用GUI(图形界面)可以搞定的事,硬去敲代码干什么
      我也懒的说了
  记住了,当你的地图  触发数  +  (全局)变量数 超过某一个数值,多出来的无效
发表于 2012-6-23 01:27:44 | 显示全部楼层
嘛。。大体上来讲没什么问题,但是那些初始值需要“新建”的变量,如计时器、单位组等,将数组大小设成1后就会有问题了,只有下标0才能响应
对于新人来说出现问题会找不到原因的……

当然可以反驳说每次需要的时候设置 变量[ i ] = 新建XX 就行了,但是就要多一步排泄,不然每次触发都会新建一个。。
这点对于新人来说也不是很方便,还不便理解……

话说这个……以前有过类似的帖子。。似乎。。


所以我个人推荐是以下这些需要多大就设置多大,其它的即便是0也没事:
单位组、玩家组、对话框、计时器

额。。。不知道不规则区域要不要设置大小

LZ的排版。。还是老样子那么乱……
话说最近是触发无效热潮吗……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-25 00:09 , Processed in 0.439108 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表