2017-03-05 7 views
0

私はカスタムエディタを作っています。3つの別々のテクスチャ(アイコンイメージ)を3つの別々のGUILayoutボタンにロードしたいと思います。私に説明してみましょう:私はリソース/プレハブフォルダから3プレハブをロードしていますし、私はちょうどこのように、各プレハブのためGUILayoutボタンを割り当てています:カスタムエディタインスペクタの複数のGUILayoutボタンに異なるテクスチャをロード

    Object[] obj = Resources.LoadAll("Prefabs", typeof(GameObject)); 
       objects = new GameObject[obj.Length]; 

       for (int i = 0; i < obj.Length; i++) 
       { 
        objects[i] = (GameObject)obj[i]; 
       } 

       if (objects != null) 
       { 
        for (int j = 0; j < obj.Length; j++) 
        { 
         if (GUILayout.Button("", GUILayout.Width(70), GUILayout.Height(70))) 
         { 
          selectedObject = objects[j]; 
         } 
        } 
       } 

がどのように各ボタンに別々のテクスチャをロードしますか?テクスチャはResources/Texturesフォルダにあります。

ありがとうございます!

答えて

0

GUILayout.Buttonの適切なオーバーロードを使用しないのはなぜですか? GUILayout.Buttonのドキュメントをご覧ください。例えば

using UnityEngine; 
using UnityEditor; 

[CustomEditor(typeof(ScriptName))] 
public class ExampleOnInspector : Editor 
{ 
    public Texture[] icons; 
    void Awake() 
    { 
     //Load textures into icons by `AssetDatabase.LoadAssetAtPath<T>(assetPath)` 
    } 

    public override void OnInspectorGUI() 
    { 
     if (GUILayout.Button(icons[0])) 
      Debug.Log("Clicked the icon 0"); 
     if (GUILayout.Button(icons[1])) 
      Debug.Log("Clicked the icon 1"); 
     if (GUILayout.Button(icons[2])) 
      Debug.Log("Clicked the icon 2"); 
    } 
} 

PS:あなたのテクスチャが唯一のエディタスクリプトで使用している場合
が、私はあなたput them in Assets/Editor Default Resources示唆しています。それ以外の場合は、ランタイムリソースに含まれます。

関連する問題