2015-06-20 74 views
-5

我試圖字符串的數組轉換成unityscript到向量,其具有值保持像值:轉換字符串在Unity

「的Vector3(5,3,8)」

到載體的陣列,但Unity不會像現在這樣使用這些字符串。有人有主意嗎?

+1

你嘗試過什麼,以及在哪裏失敗?沒有字符串分裂和基本操作就足夠了嗎? – Mephy

+0

考慮upvoting和接受答案,如果它可以幫助你。 – user3071284

回答

-2

我想別人可能會發現這個有用後來這樣:

if(PlayerPrefs.GetFloat("nodeNum") > 0) { 
    //Assemble axis value arrays 

    //X 
    var xString = PlayerPrefs.GetString("xVals"); 
    var xValues = xString.Split(","[0]); 
    //Y 
    var yString = PlayerPrefs.GetString("yVals"); 
    var yValues = yString.Split(","[0]); 
    //Z 
    var zString = PlayerPrefs.GetString("zVals"); 
    var zValues = zString.Split(","[0]); 

    var countNode = 0; 
    var goal = PlayerPrefs.GetFloat("nodeNum"); 
    var nodeVecs = new Array(Vector3.zero); 

    while (countNode != goal) { 
     var curVec = Vector3(float.Parse(xValues[countNode]), float.Parse(yValues[countNode]), float.Parse(zValues[countNode])); 
     nodeVecs.Push(curVec); 
     countNode += 1; 
    } 
    var convNodeVecs : Vector3[] = nodeVecs.ToBuiltin(Vector3) as Vector3[]; 

    for(var nodeVec : Vector3 in convNodeVecs) { 
     Instantiate(nodeObj, nodeVec, Quaternion.identity); 
    } 
} 
0

你不能所有的矢量元素轉換一起在C#中,你可以像波紋管:

其僞代碼:

position.x=convert.ToFloat("3"); 
position.y=.... 

我覺得沒有API,使這個你: 「的Vector3( 5,3,8)「

+0

我在UnityScript中試過你的方法,它的工作原理,謝謝! –

0

你沒有給我們任何示例代碼,所以我會假設數組是很好的組織,所有元素都彼此相鄰。

雖然我不認爲有什麼辦法可以完全使用UnityScript來做到這一點,但您可以使用其他語言處理文字字符串,即從Unity腳本複製到另一個將執行此操作的程序爲你改變。

下面是我要做的一個小例子。

用法:創建一個文件array.txt所有的Vector3(x,x,x)字符串,由換行符分隔,並創建另一個文件array.php

Array.txt(樣品)

Vector3(5, 1, 3) 
Vector3(3, 3, 1) 
Vector3(2, 2, 7) 
Vector3(6, 6, 4) 
Vector3(8, 8, 8) 
Vector3(9, 3, 2) 
Vector3(1, 2, 1) 
Vector3(4, 3, 6) 
Vector3(5, 3, 8) 

Array.php

<? 

$file = file('array.txt'); 

$text = array(); 

$text[] = "var vectors = new Array;"; 

foreach ($file as $i) 
{ 
    $text[] = "vectors.Push(".trim($i).");"; 
} 

echo implode("<br>", $text); 

然後,只需在PHP沙箱或Web服務器下運行它,然後將新數組複製並粘貼到腳本中。