私はタイルのテクスチャを変更することができるエディタスクリプトを持っています(私はゲームボードを作っています)。これは、さまざまな "タイルタイプ"を持つドロップダウンメニューを作成することによって動作し、メニューから新しいタイルタイプを選択すると、テクスチャが適切なタイプに変更されます。EditorGUILayout.EnumPopupカスタムエディタの値をリセットする
[CustomEditor(typeof(Tile))]
public class TileEditor : Editor {
enum Type {
Blank,
Portal
}
// Represents the type of tile this is
Type type;
public override void OnInspectorGUI() {
Tile tile = (Tile)target;
// Create a dropdown list of tile types
type = (Type)EditorGUILayout.EnumPopup ("Type", type);
switch (type) {
case Type.Blank:
tile.GetComponent<Renderer>().material = Resources.Load ("Materials/Blank Tile", typeof(Material)) as Material;
break;
case Type.Portal:
tile.GetComponent<Renderer>().material = Resources.Load("Materials/Portal Tile", typeof(Material)) as Material;
break;
}
}
}
私はそれだけで一瞬のテクスチャを変更しますドロップダウンからポータルを選択したとき、私は、予想通り、ドロップダウンメニューは動作しますが、私は材料を設定する行を削除しますが、これらの行に含まれている場合、テクスチャとメニューの両方がenum(空白)の最初の項目に戻ります。
ここでは何が起こっているのですか。どのように選択を持続させるのですか?
編集
私は少し問題を絞り込むました。ポータルタイプを選択すると、Type.Portal
のケースが実行されますが、すぐにtype
がType.Blank
に変更され、Type.Blank
のケースが実行されます。だから、私のtype
変数がOnInspectorGUI()
の呼び出しの間で変わっているようです。
それはすぐに最初の列挙にリセットされ、あなたがシーンを保存し、それをロードするときに、ゲームオブジェクトTile
スクリプトが接続されている選択したときに、それはまた、最初の列挙にリセットされます:
Tileスクリプトを投稿してみませんか? – Programmer
@Programmer現時点では空白です。ちょうど空のクラス。 – anthropomorphic
あなたの「ポータルタイル」はどのディレクトリに置かれていますか? – Programmer