From b71d5611db087772179505ed10c82ca958900df7 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 15 Oct 2020 07:04:38 +0800 Subject: +advanced inspector --- .../Examples/CSharp/AIExample29_RuntimeResolve.cs | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample29_RuntimeResolve.cs (limited to 'Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample29_RuntimeResolve.cs') diff --git a/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample29_RuntimeResolve.cs b/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample29_RuntimeResolve.cs new file mode 100644 index 00000000..7fe9fc0b --- /dev/null +++ b/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample29_RuntimeResolve.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using System.Collections; + +using AdvancedInspector; + +[AdvancedInspector] +public class AIExample29_RuntimeResolve : MonoBehaviour +{ + public bool myBoolean; + public float myFloat; + public string myString; + + private int index = 0; + + // The RuntimeResolve attribute is an edge case tool where you want to display an object, but don't know it's proper type. + // In this case, there is no editor for "object", but there's one for bool, float and string. + // By default the Advanced Inspector uses the editor related to the declared type, not the current object type. + // The RuntimeResolve forces it to seek the proper editor for the current type. + [Inspect, RuntimeResolve] + public object MyProperty + { + get + { + if (index == 0) + return myBoolean; + else if (index == 1) + return myFloat; + else + return myString; + } + set + { + if (index == 0) + myBoolean = (bool)value; + else if (index == 1) + myFloat = (float)value; + else + myString = (string)value; + } + } + + [Inspect] + public void PressMe() + { + index++; + if (index > 2) + index = 0; + } +} -- cgit v1.1-26-g67d0