简而言之,我注意到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;
}
如何返回某种数据类型,但当函数“失败”时,我的函数也返回boolean(false)。它的任务?
答案 0 :(得分:1)
我暂时没有使用Unity,但我认为你只需要这样做:
Transform SelectObject() {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, unitLayer))
return hit.transform;
else
return null;
}
Unity有一个实用程序,可以将从UnityEngine.Object
派生的对象转换为布尔值:如果对象为null,则为false;如果是其他情况,则为true。
这是一个奇怪的事情,但它实际上对我有用。
我认为您可以将Transform对象隐式转换为boolean,如下所示:
bool b = SelectObject();