2014-10-10 59 views
0

我試圖按照這個教程,最初是爲UnityScript寫的,而是用噓聲代替: http://docs.unity3d.com/Manual/Example-CreatingaBillboardPlane.htmlBoo列表 - 投射到(in​​t)?

這裏是我的嘗試:

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] 

但是,這仍然沒」 t工作 - 它只是將我的錯誤信息更改爲:

無法將'Boo.Lang.List [int]'轉換爲'(int)'。

我不知道這意味着什麼用(int) - 我曾以爲這是一個List只的int小號包括但似乎我一定是錯誤的。

+0

好吧,它似乎是一個國防部不同意你:http://stackoverflow.com/review/low-quality-posts/6151710。我會在那裏回覆,但是,你知道,它被刪除了。 – LittleBobbyTables 2014-11-04 15:18:10

+0

@LittleBobbyTables - 沒關係。合理的人可能會不同意。這就是爲什麼我們手動檢查標誌的人爲因素,而不是僅僅通過腳本自動確定是否是僅鏈接應答。 – ArtOfWarfare 2014-11-04 15:20:11

回答

2

要點:Mesh類需要數組,而不是列表。這兩種類型非常相似,但不完全相同。

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

該行創建整數列表:

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

對戰int數組:

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

報告中,我們交換[]大括號()括號。

+1

我永遠在你的債務 - 我必須嘗試100種不同的方式來解決這個在過去的10個小時。謝謝! – ArtOfWarfare 2014-10-10 19:26:46

+0

您是否介意擴展您的列表以涵蓋如何在Boo中的字典或散列中指定鍵和值? – ArtOfWarfare 2014-11-09 21:21:22

+0

我將表中的列表擴展爲包含如何在Boo中製作字典。您或其他人可以將C#添加到它。 – ArtOfWarfare 2014-11-12 21:51:58