【发布时间】:2017-02-25 07:28:19
【问题描述】:
简而言之,我注意到 Unity(我使用的一个简单的游戏开发平台)中的许多预定义函数要么返回一个值(例如坐标),要么在满足某些条件时返回 false。我自己尝试过这样做,但是编译器总是在寻找一个转换作为返回类型,并且不允许我返回一个布尔值(因为函数被声明为返回一个转换)。
Transform SelectObject() {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, unitLayer))
return hit.transform;
else
return false;
}
如何在函数“失败”其任务时返回某种数据类型,同时让函数返回布尔值 (false)?
【问题讨论】:
-
即使是预定义的函数也应该记录在某个地方。也许您想寻找此类行为的一些示例。我不喜欢 Unity,但你在这里描述的内容听起来很奇怪。您确定没有一些 隐式 转换将“null”之类的内容转换为 false 吗?!
-
@GhostCat 答案一直就在我的代码中。我不明白“out”关键字的基本概念。某些预定义函数(例如“Physics.Raycast()”)将根据是否满足某些条件返回真或假,但这些函数还将通过另一个带有“out”关键字的变量传递额外信息。有效地返回一个布尔值和一些额外的信息。
标签: function unity3d return return-type