Boo列表-强制转换为(int)



我试图遵循本教程,该教程最初是为UnityScript编写的,但改为使用Boo:http://docs.unity3d.com/Manual/Example-CreatingaBillboardPlane.html

以下是我尝试过的:

import UnityEngine
class CreateMesh (MonoBehaviour): 
    def Start ():
        meshFilter = GetComponent(MeshFilter)
        mesh = Mesh()
        mesh.vertices = [Vector3(0, 0, 0), Vector3(1, 0, 0), Vector3(0, 1, 0), Vector3(1, 1, 0)]
        mesh.triangles = [0, 2, 1, 2, 3, 1]
        mesh.normals = [-Vector3.forward, -Vector3.forward, -Vector3.forward, -Vector3.forward]
        meshFilter.mesh = mesh
    
    def Update ():
        pass

不幸的是,我的每一个列表文字都造成了问题:

无法将"Boo.Lang.List"转换为"(UnityEngine.Vector3)"

无法将"Boo.Lang.List"转换为"(int)"

无法将"Boo.Lang.List"转换为"(UnityEngine.Vector3)"

这有点令人失望——我本以为Boo能够推断出我的列表的类型,因为其中的所有元素都是相同的类型。无论如何,我认为所有必要的都是某种类型的演员阵容声明。我在Unity上查看了其他一些Boo示例,但似乎没有一个像我想的那样使用列表。

我仔细研究了一下,发现我可以转换成这样的类型列表:

[...] as List[of type]

所以我试着这样做:

mesh.triangles = [0, 2, 1, 2, 3, 1] as List[of int]

但这仍然没有起作用——它只是将我的错误信息更改为:

无法将"Boo.Lang.List[of int]"转换为"(int)"。

我不知道(int)是什么意思——我以为这是一个只由int组成的List,但我似乎错了。

关键点:Mesh类需要数组,而不是列表。这两种类型非常相似,但并不完全相同。

Type                 C#           Boo
-----------------------------------------------
List of integers     List<int>    List[of int]
Array of integers    int[]        (int)
Dictionary           ???          Dictionary[of key, value]

此行创建一个int列表:

mesh.triangles = [0, 2, 1, 2, 3, 1]

对比int数组:

mesh.triangles = (0, 2, 1, 2, 3, 1)

请注意,我们将[]大括号替换为()括号。

相关内容

  • 没有找到相关文章

最新更新