我在学习一个用C#写的Unity3D教程,尝试着用UnityScript/Javascript来做。下面的几行我没能转换成功,是关于光线投射的。
这是 C# :
1 2 3 4 |
|
这是我所拥有的相关变量:
1 2 3 4 5 |
|
这是 Physics.Raycast的签名:
1 2 3 4 5 |
|
我知道问题在于使用UnityScript不能辨别出“out”是什么,我不知道用什么来代替它。
原问题:Raycast - convert from C# to UnityScript
大家讲道理2017-04-10 13:13:53
答案:
crush:
根据文档 documentation:
1 2 3 4 5 |
|
参数 (阅读hitInfo说明)
1 2 3 4 5 6 |
|
在C#,out通过引用传递, 这样能允许函数修改它范围之外的值。在UnityScript中,你不需要定义何时用引用或值来传递。所以,你只要省略out
1 2 3 4 5 6 7 8 9 |
|
注意,根据LayerMask documentation,LayerMask可以从整数隐式转换
msm8bball:
out 意味着传递参数将是通过“引用”传递,和通过“值”传递相对。看看。
我不太熟悉UnityScript. 但是创建同等函数的方法之一是创建一个新的要返回的class,包含通常会返回的Boolean,以及RaycastHit对象。
1 2 3 4 |
|
Luaan:
这其实不需要out关键词
1 2 3 4 5 |
|
你可以参考一下UnityScript文档http://docs.unity3d.com/Documentation/ScriptReference/Physics.Raycast.html
Out和ref是有用的C#构造,允许你把引用传递到结构(或者传递引用到class引用),通常会被值传递取代。
C#方法的变体将会创建一个RaycastHit类型的新实例,并将其指定到作为out参数传递的变量。
在UnityScript, 这是不必要的,不用out关键词也可以做到你想要的东西。