找回密码
 点一下
查看: 1212|回复: 8

单位腐化是否自动删除

[复制链接]
发表于 2011-3-16 10:39:26 | 显示全部楼层 |阅读模式
单位腐化之后会不会被系统自动删除掉,如果是,验证方法是?
发表于 2011-3-16 12:15:58 | 显示全部楼层
设置一个单位变量,如果被该变量设置的单位被删除那么我想这个变量应该不会继续指向已经没有掉了的单位
唔,似乎是错的
回复

使用道具 举报

发表于 2011-3-16 12:34:51 | 显示全部楼层
会自动删除~
验证方法:
id.w3x (10 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2011-3-16 13:45:31 | 显示全部楼层
小鸟说错了~
就算单位被删除了,变量还是会指向单位的。
所以,“局部变量”才需要通过set null来排泄。
回复

使用道具 举报

发表于 2011-3-19 13:36:05 | 显示全部楼层
小鸟~~~~~~[s:166][s:166][s:166]
回复

使用道具 举报

 楼主| 发表于 2011-3-19 18:33:48 | 显示全部楼层
唔......居然是Jass......看不懂诶,能说明一下原理么。
回复

使用道具 举报

发表于 2011-3-19 19:01:58 | 显示全部楼层
因为T没有这个功能,所以只能用J了。
原理是:
使用ReturnBug获得死亡步兵的handle值,然后在其尸体腐化后创建一个骑士,并将骑士的handle值来与步兵作比较。
由于步兵死亡后没有其他物体被创建,因此步兵的handle在步兵被删除后并不会被分配给其他单位。
所以,如果步兵在腐化后会被删除,那么创建骑士的时候就会将步兵的handle分配给骑士,从而造成两次输出handle值相等。(反之则不会)
实验结果:
两次输出结果相同
实验结论:
单位腐化后会自动删除
回复

使用道具 举报

发表于 2011-3-19 19:13:07 | 显示全部楼层
补充:
判断一个物体是否已经被删除的标准,也就是看这个物体储存在内存中的属性数据是否被删除。
而一个单位的handle值也就是储存这个单位数据的内存的地址,只有在这个单位被删除之后,这个handle所对应的内存区域才会分配给其他物体。
所以,通过判断单位的handle id是否被分配给其他物体,就可以判断单位是否被删除了。

而获得单位handle id的方法,也就是:
ReturnBug(1.20)
GetHandleId(1.24)
有兴趣可以搜索一下以前的资料看看。
回复

使用道具 举报

 楼主| 发表于 2011-3-19 19:44:18 | 显示全部楼层
不错,谢谢了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-1 00:11 , Processed in 0.034649 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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