找回密码
 点一下
查看: 2540|回复: 5

cj中的本地转换常函数与相应常量

[复制链接]
发表于 2007-1-28 19:51:38 | 显示全部楼层 |阅读模式
相关例(截取自common.j):
[jass]type unittype           extends     handle
constant native ConvertUnitType             takes integer i returns unittype
globals
....
constant unittype UNIT_TYPE_HERO                        = ConvertUnitType(0)
[/jass]

一个简单的应用上的问题。。
比如在IsUnitType() 中,应用UNIT_TYPE_HERO或ConvertUnitType(0)更好?
发表于 2007-1-28 23:29:00 | 显示全部楼层
UNIT_TYPE_HERO比较好,常数是最快的。
UNIT_TYPE_HERO是一个值,而ConvertUnitType(0)会调用一次函数。
使用ConvertUnitType(3+2-5)可以达到让jass代码难读懂。
回复

使用道具 举报

 楼主| 发表于 2007-1-29 02:03:38 | 显示全部楼层
既然像unittype这样的定义是一个handle,但用return bug得出ConvertUnitType(xx)=xx
回复

使用道具 举报

发表于 2007-1-29 23:10:08 | 显示全部楼层
应该是用的return bug,不过也可能不是
ConvertUnitType(xx)=yy
主要依据yy==xx?来判断。
回复

使用道具 举报

 楼主| 发表于 2007-1-30 03:00:01 | 显示全部楼层
实际上是这样:
[jass]function debughandle takes nothing returns nothing
local integer i=xx
local unittype ut=ConvertUnitType(i)
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,I2S(H2I(ui)))
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,I2S(H2I(ConvertUnitType(i))))
...
[/jass]
显示出来的是整数xx
回复

使用道具 举报

发表于 2007-1-30 08:52:34 | 显示全部楼层
因为他们的编号就是这样,然后这些handle类(如玩家颜色、攻击类型也都一样)都是独立分配一块存储地址的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 03:51 , Processed in 0.031442 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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