找回密码
 点一下
查看: 2035|回复: 9

在求助一个关于变量尺寸的问题

[复制链接]
发表于 2008-2-3 20:50:02 | 显示全部楼层 |阅读模式
什么类型的变量尺寸必须要依据变量的使用来设置大于或等于使用的尺寸
发表于 2008-2-3 21:10:44 | 显示全部楼层
我想我应该回去学学语文。。。
回复

使用道具 举报

发表于 2008-2-3 21:12:41 | 显示全部楼层
引用第1楼eff于2008-02-03 21:10发表的  :
我想我应该回去学学语文。。。

eff大人我和您一起去吧~~
回复

使用道具 举报

 楼主| 发表于 2008-2-3 21:20:35 | 显示全部楼层
谢谢
我想问的是假如设置了一个变量 并且这个变量是数组变量 那么那个数组大小什么类型的可以就设置为1
而什么类型要依据这个变量的使用尺寸来设置
回复

使用道具 举报

发表于 2008-2-3 21:22:43 | 显示全部楼层
jass里面的数组是固定大小,貌似是8400+,WE默认限制8192.

所以不用担心
回复

使用道具 举报

发表于 2008-2-4 02:56:13 | 显示全部楼层
如果楼主在哪里看到过类似言论~~

只能证明说那句话的人没有正确理解~~

其实we里让你指定的那个数组容量并非真正的数组容量~~所有的数组容量默认就是8192~~



那么we里那个容量是做什么的呢?并非是装样子看的~~其实它是用于给一个对象组进行初始化的~~指向对象的变量在被声明的时候~~并不指向任何实际对象~~而是null~~而在we中~~默认会对一些对象变量进行初始化操作~~

比方说~~Dialog类型变量在we中被声明的时候~~会自动被加上一段代码~~用于新建一个空对话框对象~~然后让该新变量指向这个对话框~~

we的数组容量在这时候就发挥作用了~~毕竟对象是很占据内存空间的~~我们不可能在声明一个对话框数组的时候就给它的8192个元素都新建一个对应的对话框对象~~因此这个“容量”其实指定的是初始化对象的个数~~


至于哪些需要加哪些不用加~~如果把我的话看明白了就很容易区分了~~

比方说我们在生命单位类型变量的时候显然没有新建一个单位~~声明地区、物品、可破坏物的时候自然也是一样~~

然而像对话框、计时器、单位组等对象变量~~我们声明后就立即可以用的(不用经过“创造对象再赋值”这部操作的)~~那么自然就是在声明时候就被赋给了初始化对象的变量了~~就需要给它定数量了~~否则只有第一个元素指向实际对象的话~~后面几个元素就都指空了~~
回复

使用道具 举报

发表于 2008-2-4 03:06:13 | 显示全部楼层
[jass]
globals
    // User-defined
    unit array              udg_U
    dialog array            udg_D

    // Generated
    trigger                 gg_trg_Melee_Initialization = null
endglobals

function InitGlobals takes nothing returns nothing
    local integer i = 0
    set i = 0
    loop
        exitwhen (i > 10)
        set udg_D = DialogCreate()
        set i = i + 1
    endloop

endfunction
[/jass]

这一段变量初始话脚本显示了这两者的区别~~unit类型数组udg_U在声明中没有被赋予任何实际变量~~

而diaglog类型数组调用了DialogCreate()来给该数组的前11个值(0-10)赋初值~~所以0-10这11个元素将指向11个新建的空对话框对象~~而10以后的元素都将指向null~~
回复

使用道具 举报

 楼主| 发表于 2008-2-4 13:31:22 | 显示全部楼层
了解了~~
回复

使用道具 举报

发表于 2008-2-5 03:13:18 | 显示全部楼层
dialog timer group force
回复

使用道具 举报

发表于 2008-2-5 14:16:03 | 显示全部楼层
原来原理是这样的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-26 13:26 , Processed in 0.032762 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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