2017-10-15 62 views
0

第一個腳本:如何使用枚舉在兩個腳本之間傳遞變量?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class WallsTest : MonoBehaviour 
{ 
    public enum WallsInfo 
    { 
     Position, Length 
    }; 

    // using a GameObject rather than a transform 
    public GameObject prefab; 
    public Vector3 wallsStartPosition; 
    public float width = 0; 
    public float height = 1; 
    public float length = 2; 
    public Camera wallsCamera; 

    void Start() 
    { 
     wallsCamera.transform.position = new Vector3(wallsStartPosition.x, wallsStartPosition.y + 100, wallsStartPosition.z - 235); 

     WallsInfo.Position = wallsStartPosition; 

     BuildWalls(); 
    } 

然後在另一個位置,我將要使用的WallsInfo.Position ,但我不知道,如果使用枚舉是一個好主意傳遞變量?以及如何做到這一點?

行:

WallsInfo.Position = wallsStartPosition; 

給我的錯誤:

賦值的左邊必須是一個變量,屬性或索引

,我也想通過變量長度使用長度

+0

字符什麼是'wallsStartPosition'?你能把它放在你的問題嗎? –

+0

@osmanRahimi wallsStartPosition是我在檢查員編輯器中設置的開始位置。例如,現在是250,0,250,我沒有在編輯器中設置/ init init腳本。 –

+0

你不能將值設置爲'WallsInfo.Position',這是一個枚舉 –

回答

0

在這裏你不需要枚舉,你需要一個類或結構。我賭一個結構,因爲它不能爲空。

public struct WallsInfo 
{ 
    public Vector3 Position { get; set; } 
    public float Length { get; set; } 
}; 

另一方面,枚舉用於存儲常量命名值集合,映射到數字以獲得更好的組織結構。例如,如果你想跟蹤一個角色是男孩還是女孩。然後,你可以把一個int,說1是指男孩2是指女孩在你的頭上,或者你可以這樣做:

public enum Gender 
{ 
    Boy = 1 
    Girl =2 
} 

然後很容易有誰可以存儲男孩或女孩喜歡

var gender = Gender.Boy; 
+0

這應該是我現在看到的問題,這是第二個需要獲取這個值的腳本首先執行,因此他得到的信息是空的。位置是0,0,0,長度也是0. –

+0

您應該爲其分配值。你創建的新結構就像一個普通的'int'或'string'類型,你只需要創建一個具有所需值的結構並將它傳遞給另一個腳本。 Unity非常聰明地處理了這個問題,你可以在第一個腳本中創建一個「公共WallsInfo Walls」,用值填充它,然後用'script1instance.Walls' – Emad

相關問題