2017-10-15 64 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

相关问题