Features:
- MVVM architecture
- Factory-based GUI (View)
Supported types:
- Primitives (int, float, etc.)
- Vector2, Vector3, etc.
- User defined classes
- Arrays
Define data class (Model)
[System.Serializable]
public class InnerModel {
public bool bool01;
public string string01;
public int int01;
public float float01;
}
[System.Serializable]
public class Model {
public enum SimpleEnum { One, Two }
public Vector2 vec2_01;
public Vector3 vec3_01;
public Vector4 vec4_01;
public Vector2Int vec2int01;
public InnerModel innerClass01;
}
Create view from the data
public class TestViewModel : MonoBehaviour {
public Model data;
protected BaseView view;
void OnEnable() {
var viewFactory = new SimpleViewFactory();
view = ClassConfigurator.GenerateClassView(new BaseValue<object>(data), viewFactory);
}
void OnDisable() {
view.Dispose();
}
Call Draw() method in MonoBehaviour.OnGUI()
void OnGUI() {
window = GUILayout.Window(GetInstanceID(), window, Window, name);
}
void Window(int id) {
view.Draw();
GUI.DragWindow();
}
Import UniRx plugin from Unity Asset Store.
Add this repository in your project.
git submodule add https://github.com/nobnak/ModelDrivenGUI.git Assets/Packages/ModelDrivenGUI