找回密码
 点一下
查看: 589|回复: 3

关于函数返回值

[复制链接]
发表于 2012-4-13 13:45:21 | 显示全部楼层 |阅读模式
在捕捉单位释放技能和发布指令时,如果技能和指令是点目标的,我用GetSpellTargetUnit()和GetOrderTargetUnit()是否会返回null?
如果是单位目标,用GetSpellTargetLocation()和GetOrderTargetLocation()是否会返回null?

另外,如果我要用局部变量return unit,怎么排泄?
发表于 2012-4-13 15:33:29 | 显示全部楼层
“如果我怎么怎么,那会怎么?”这种问题自己试一把不就知道的么?明显比等问题答案快的多吧。

至于第二个问题,简单来说,就是不建议这么做。

一定想要返回一个单位的话,就用个全局变量作中介吧。或者干脆就不管整数部分的泄露。
回复

使用道具 举报

 楼主| 发表于 2012-4-13 17:44:12 | 显示全部楼层
“如果我怎么怎么,那会怎么?”这种问题自己试一把不就知道的么?明显比等问题答案快的多吧。

这个。。。我不能用测试地图,不然会被认为是在打游戏,中午和傍晚就不能用电脑了(高三了)
回复

使用道具 举报

发表于 2012-4-13 21:16:10 | 显示全部楼层
点目标技能当然不能获得施法目标单位,比如暴风雪
单位目标可以获得施法点


局部变量返回的话,沙发正解~

除了用自定义全局外,还可以考虑用参数或BJ全局变量作为媒介:
[jass]
function a takes unit u returns nothing
            set u = GetTriggerUnit()
            return u
endfunction[/jass]
上面这个函数调用的时候参数写null即可
[jass]
function a takes nothing returns unit
            local unit u = GetTriggerUnit()
            set bj_lastCreatedUnit = u
            set u = null
            return bj_lastCreatedUnit
endfunction[/jass]
可以直接用bj变量,但是bj变量名很长,所以先用个局部
上面这个函数性质跟自定义全局一样,但是可以少定义一个全局变量,反正LZ都用J了bj变量就基本没用了吧~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 19:45 , Processed in 0.030004 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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