I have an array of ScritableObject
's, which should only be displayed in the inspector if a boolean
is true. How would I do this? With my current code, I get an error saying:
Cannot implicitly convert type
Tile
to `Tile[]
This is my current code:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CreateAssetMenu (fileName="Data", menuName="Tiles/Map", order=1)]
public class Tile : ScriptableObject {
public ETile eTile;
public Sprite sprite;
[Space(5), Header("Variety")]
public bool variety;
[Range(0f, 1f)]
public float varietyChance;
public Tile[] varietyTiles; <---- This should be hidden if variety is true
}
public enum ETile {
Water,
Grass
}
[CustomEditor(typeof(Tile))]
public class MyScriptEditor : Editor {
override public void OnInspectorGUI() {
var tile = target as Tile;
tile.variety = EditorGUILayout.Toggle("Hide Fields", tile.variety);
if (tile.variety) {
tile.varietyTiles = (Tile)EditorGUILayout.ObjectField("Tile", tile, typeof(Tile), allowSceneObjects: true); }
}
}
}