У меня была похожая проблема, я ее решил следующим образом
есть такая чтука как custom editor, может показаться что это что то сложное но на самом деле, сложно написать только 1й, остальные пойдут как по маслу
Находится они должны все в папке Assets/Editor
GameConfigInspector, это мой кастомный инспектор в котором есть кнопка PopulateDefaultValues. и все gameObjects к которому приатачен скрипт LevelBuilderConfig(его можно видеть выше объявления класса) будут использовать этот инспектор
Вот сам код
Используется csharp
using UnityEditor;
using UnityEngine;
using System.Collections;
[CustomEditor(typeof(LevelBuilderConfig))]
public class GameConfigInspector : Editor {
public override void OnInspectorGUI(){
base.OnInspectorGUI();
if (GUILayout.Button("Populate Default values"))
populateDefaultValues();
}
private void populateDefaultValues(){
LayerConfig[] lc=new LayerConfig[]{
new LayerConfig(10,20,1,1),
new LayerConfig(20,60,1,2),
new LayerConfig(40,120,1,5),
new LayerConfig(10,70,2,6),
new LayerConfig(10,110,3,10),
new LayerConfig(10,160,8,20),
};
LevelBuilderConfig.instance.layerConfig=lc;
Object[] go=Resources.LoadAll("Materials/PrefabUnlitColors");
Material[] mat=new Material[go.Length];
for (int i=0;i<go.Length;i++){
mat[i]=(Material)go[i];
}
LevelBuilderConfig.instance.materials=mat;
}
}
Если почитать, то можно увидеть что 1-е я заполняю массив конфигов уровня (LayerConfig) (это мой класс)
2е. у меня в одной папке лежат 5 матерьялов, и я их сохраняю в массив LevelBuilderConfig.instance.materials, чтоб потом через random в применять разные матерьялы к одинаковым объектам. (очевидно, что для поддержки это удобнее, сделал новый матерьял, кликнул кнопку и не надо руками ничего никуда перетаскивать)
Так же можно запихнуть pupulateDefaultValues() в Start() - но тут получается не совсем явно, потому как иногда я все же конфиги правлю в инспекторе, и не хочется чтоб они перетирались по хз чему.
а.. ну и в инспекторе, это выглядит вот так вот
Как раз там все параметры заполнились по кнопке