2017-10-15 3 views
0

最初のスクリプト:2つのスクリプト間で変数を渡すためにenumを使用するにはどうすればよいですか?

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を設定しません。 –

+0

'WallsInfo.Position'に値を設定することはできません、それはenumです –

答えて

0

ここでは、クラスまたは構造体が必要なenumは必要ありません。私はNULLにすることはできませんので、構造体を賭けた。一方、

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

これは、この値を取得する必要がある2番目のスクリプトが最初に実行されるので、取得する情報が空であるという問題を解決するはずです。位置は0,0,0、長さも0です。 –

+0

値を割り当てる必要があります。あなたが作成した新しい構造体は、通常の 'int'や' string'のような型で、必要な値で作成し、それを他のスクリプトに渡すだけです。 Unityは最初のスクリプトで 'public WallsInfo Walls'を作成し、値を入力して' script1instance.Walls'を使って他のスクリプトにアクセスしてください – Emad

関連する問題