本文整理汇总了C#中EventDelegate.ToString方法的典型用法代码示例。如果您正苦于以下问题:C# EventDelegate.ToString方法的具体用法?C# EventDelegate.ToString怎么用?C# EventDelegate.ToString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EventDelegate
的用法示例。
在下文中一共展示了EventDelegate.ToString方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnGUI
public override void OnGUI (Rect position, SerializedProperty prop, GUIContent label)
{
Undo.RecordObject(prop.serializedObject.targetObject, "Delegate Selection");
SerializedProperty targetProp = prop.FindPropertyRelative("mTarget");
SerializedProperty methodProp = prop.FindPropertyRelative("mMethodName");
MonoBehaviour target = targetProp.objectReferenceValue as MonoBehaviour;
string methodName = methodProp.stringValue;
EditorGUI.indentLevel = prop.depth;
EditorGUI.LabelField(position, label);
Rect line = position;
line.yMin = position.yMin + lineHeight;
line.yMax = line.yMin + lineHeight;
EditorGUI.indentLevel = targetProp.depth;
target = EditorGUI.ObjectField(line, "Notify", target, typeof(MonoBehaviour), true) as MonoBehaviour;
if (target != null && target.gameObject != null)
{
GameObject go = target.gameObject;
List<Entry> list = EventDelegateEditor.GetMethods(go);
int index = 0;
int choice = 0;
EventDelegate del = new EventDelegate();
del.target = target;
del.methodName = methodName;
string[] names = PropertyReferenceDrawer.GetNames(list, del.ToString(), out index);
line.yMin += lineHeight;
line.yMax += lineHeight;
choice = EditorGUI.Popup(line, "Method", index, names);
if (choice > 0)
{
if (choice != index)
{
Entry entry = list[choice - 1];
target = entry.target as MonoBehaviour;
methodName = entry.name;
}
}
}
targetProp.objectReferenceValue = target;
methodProp.stringValue = methodName;
}
示例2: Field
/// <summary>
/// Draw an editor field for the Unity Delegate.
/// </summary>
static public bool Field (Object undoObject, EventDelegate del, bool removeButton)
{
if (del == null) return false;
bool prev = GUI.changed;
GUI.changed = false;
bool retVal = false;
MonoBehaviour target = del.target;
bool remove = false;
if (removeButton && (del.target != null || del.isValid))
{
if (del.target == null && del.isValid)
{
EditorGUILayout.LabelField("Notify", del.ToString());
}
else
{
target = EditorGUILayout.ObjectField("Notify", del.target, typeof(MonoBehaviour), true) as MonoBehaviour;
}
GUILayout.Space(-20f);
GUILayout.BeginHorizontal();
GUILayout.Space(64f);
#if UNITY_3_5
if (GUILayout.Button("X", GUILayout.Width(20f)))
#else
if (GUILayout.Button("", "ToggleMixed", GUILayout.Width(20f)))
#endif
{
target = null;
remove = true;
}
GUILayout.EndHorizontal();
}
else
{
target = EditorGUILayout.ObjectField("Notify", del.target, typeof(MonoBehaviour), true) as MonoBehaviour;
}
if (remove)
{
NGUIEditorTools.RegisterUndo("Delegate Selection", undoObject);
del.Clear();
EditorUtility.SetDirty(undoObject);
}
else if (del.target != target)
{
NGUIEditorTools.RegisterUndo("Delegate Selection", undoObject);
del.target = target;
EditorUtility.SetDirty(undoObject);
}
if (del.target != null && del.target.gameObject != null)
{
GameObject go = del.target.gameObject;
List<Entry> list = GetMethods(go);
int index = 0;
string[] names = GetMethodNames(list, del.ToString(), out index);
int choice = 0;
GUILayout.BeginHorizontal();
choice = EditorGUILayout.Popup("Method", index, names);
GUILayout.Space(18f);
GUILayout.EndHorizontal();
if (choice > 0)
{
if (choice != index)
{
Entry entry = list[choice - 1];
NGUIEditorTools.RegisterUndo("Delegate Selection", undoObject);
del.target = entry.target;
del.methodName = entry.method.Name;
EditorUtility.SetDirty(undoObject);
GUI.changed = prev;
return true;
}
}
}
retVal = GUI.changed;
GUI.changed = prev;
return retVal;
}
示例3: OnGUI
public override void OnGUI (Rect rect, SerializedProperty prop, GUIContent label)
{
Undo.RecordObject(prop.serializedObject.targetObject, "Delegate Selection");
SerializedProperty targetProp = prop.FindPropertyRelative("mTarget");
SerializedProperty methodProp = prop.FindPropertyRelative("mMethodName");
MonoBehaviour target = targetProp.objectReferenceValue as MonoBehaviour;
string methodName = methodProp.stringValue;
EditorGUI.indentLevel = prop.depth;
EditorGUI.LabelField(rect, label);
Rect lineRect = rect;
lineRect.yMin = rect.yMin + lineHeight;
lineRect.yMax = lineRect.yMin + lineHeight;
EditorGUI.indentLevel = targetProp.depth;
target = EditorGUI.ObjectField(lineRect, "Notify", target, typeof(MonoBehaviour), true) as MonoBehaviour;
targetProp.objectReferenceValue = target;
if (target != null && target.gameObject != null)
{
GameObject go = target.gameObject;
List<Entry> list = EventDelegateEditor.GetMethods(go);
int index = 0;
int choice = 0;
EventDelegate del = new EventDelegate();
del.target = target;
del.methodName = methodName;
string[] names = PropertyReferenceDrawer.GetNames(list, del.ToString(), out index);
lineRect.yMin += lineHeight;
lineRect.yMax += lineHeight;
choice = EditorGUI.Popup(lineRect, "Method", index, names);
if (choice > 0 && choice != index)
{
Entry entry = list[choice - 1];
target = entry.target as MonoBehaviour;
methodName = entry.name;
targetProp.objectReferenceValue = target;
methodProp.stringValue = methodName;
}
SerializedProperty paramArrayProp = prop.FindPropertyRelative("mParameters");
EventDelegate.Parameter[] ps = del.parameters;
if (ps != null)
{
paramArrayProp.arraySize = ps.Length;
for (int i = 0; i < ps.Length; i++)
{
EventDelegate.Parameter param = ps[i];
SerializedProperty paramProp = paramArrayProp.GetArrayElementAtIndex(i);
SerializedProperty objProp = paramProp.FindPropertyRelative("obj");
SerializedProperty fieldProp = paramProp.FindPropertyRelative("field");
param.obj = objProp.objectReferenceValue;
param.field = fieldProp.stringValue;
Object obj = param.obj;
lineRect.yMin += lineHeight;
lineRect.yMax += lineHeight;
obj = EditorGUI.ObjectField(lineRect, " Arg " + i, obj, typeof(Object), true);
objProp.objectReferenceValue = obj;
del.parameters[i].obj = obj;
param.obj = obj;
if (obj == null) continue;
GameObject selGO = null;
System.Type type = param.obj.GetType();
if (type == typeof(GameObject)) selGO = param.obj as GameObject;
else if (type.IsSubclassOf(typeof(Component))) selGO = (param.obj as Component).gameObject;
if (selGO != null)
{
// Parameters must be exact -- they can't be converted like property bindings
PropertyReferenceDrawer.filter = param.expectedType;
PropertyReferenceDrawer.canConvert = false;
List<PropertyReferenceDrawer.Entry> ents = PropertyReferenceDrawer.GetProperties(selGO, true, false);
int selection;
string[] props = EventDelegateEditor.GetNames(ents, NGUITools.GetFuncName(param.obj, param.field), out selection);
lineRect.yMin += lineHeight;
lineRect.yMax += lineHeight;
int newSel = EditorGUI.Popup(lineRect, " ", selection, props);
if (newSel != selection)
{
if (newSel == 0)
{
param.obj = selGO;
param.field = null;
//.........这里部分代码省略.........
示例4: Field
/// <summary>
/// Draw an editor field for the Unity Delegate.
/// </summary>
static public bool Field (Object undoObject, EventDelegate del, bool removeButton, bool minimalistic)
{
if (del == null) return false;
bool prev = GUI.changed;
GUI.changed = false;
bool retVal = false;
MonoBehaviour target = del.target;
bool remove = false;
if (removeButton && (del.target != null || del.isValid))
{
if (!minimalistic) NGUIEditorTools.SetLabelWidth(82f);
if (del.target == null && del.isValid)
{
EditorGUILayout.LabelField("Notify", del.ToString());
}
else
{
target = EditorGUILayout.ObjectField("Notify", del.target, typeof(MonoBehaviour), true) as MonoBehaviour;
}
GUILayout.Space(-18f);
GUILayout.BeginHorizontal();
GUILayout.Space(70f);
if (GUILayout.Button("", "ToggleMixed", GUILayout.Width(20f), GUILayout.Height(16f)))
{
target = null;
remove = true;
}
GUILayout.EndHorizontal();
}
else target = EditorGUILayout.ObjectField("Notify", del.target, typeof(MonoBehaviour), true) as MonoBehaviour;
if (remove)
{
NGUIEditorTools.RegisterUndo("Delegate Selection", undoObject);
del.Clear();
EditorUtility.SetDirty(undoObject);
}
else if (del.target != target)
{
NGUIEditorTools.RegisterUndo("Delegate Selection", undoObject);
del.target = target;
EditorUtility.SetDirty(undoObject);
}
if (del.target != null && del.target.gameObject != null)
{
GameObject go = del.target.gameObject;
List<Entry> list = GetMethods(go);
int index = 0;
string[] names = PropertyReferenceDrawer.GetNames(list, del.ToString(), out index);
int choice = 0;
GUILayout.BeginHorizontal();
choice = EditorGUILayout.Popup("Method", index, names);
NGUIEditorTools.DrawPadding();
GUILayout.EndHorizontal();
if (choice > 0 && choice != index)
{
Entry entry = list[choice - 1];
NGUIEditorTools.RegisterUndo("Delegate Selection", undoObject);
del.target = entry.target as MonoBehaviour;
del.methodName = entry.name;
EditorUtility.SetDirty(undoObject);
retVal = true;
}
GUI.changed = false;
EventDelegate.Parameter[] ps = del.parameters;
if (ps != null)
{
for (int i = 0; i < ps.Length; ++i)
{
EventDelegate.Parameter param = ps[i];
Object obj = EditorGUILayout.ObjectField(" Arg " + i, param.obj, typeof(Object), true);
if (GUI.changed)
{
GUI.changed = false;
param.obj = obj;
EditorUtility.SetDirty(undoObject);
}
if (obj == null) continue;
GameObject selGO = null;
System.Type type = obj.GetType();
if (type == typeof(GameObject)) selGO = obj as GameObject;
else if (type.IsSubclassOf(typeof(Component))) selGO = (obj as Component).gameObject;
//.........这里部分代码省略.........
示例5: OnGUI
public override void OnGUI (Rect rect, SerializedProperty prop, GUIContent label)
{
Undo.RecordObject(prop.serializedObject.targetObject, "Delegate Selection");
SerializedProperty targetProp = prop.FindPropertyRelative("mTarget");
SerializedProperty methodProp = prop.FindPropertyRelative("mMethodName");
MonoBehaviour target = targetProp.objectReferenceValue as MonoBehaviour;
string methodName = methodProp.stringValue;
EditorGUI.indentLevel = prop.depth;
EditorGUI.LabelField(rect, label);
Rect lineRect = rect;
lineRect.yMin = rect.yMin + lineHeight;
lineRect.yMax = lineRect.yMin + lineHeight;
EditorGUI.indentLevel = targetProp.depth;
target = EditorGUI.ObjectField(lineRect, "Notify", target, typeof(MonoBehaviour), true) as MonoBehaviour;
targetProp.objectReferenceValue = target;
if (target != null && target.gameObject != null)
{
GameObject go = target.gameObject;
List<Entry> list = EventDelegateEditor.GetMethods(go);
int index = 0;
int choice = 0;
EventDelegate del = new EventDelegate();
del.target = target;
del.methodName = methodName;
string[] names = PropertyReferenceDrawer.GetNames(list, del.ToString(), out index);
lineRect.yMin += lineHeight;
lineRect.yMax += lineHeight;
choice = EditorGUI.Popup(lineRect, "Method", index, names);
if (choice > 0)
{
if (choice != index)
{
Entry entry = list[choice - 1];
target = entry.target as MonoBehaviour;
methodName = entry.name;
targetProp.objectReferenceValue = target;
methodProp.stringValue = methodName;
}
}
// Unfortunately Unity's property drawers only work with UnityEngine.Object-derived types.
// This means that arrays are not supported. And since EventDelegate is not derived from
// UnityEngine.Object either, it means that it's not possible to modify the parameter array.
EditorGUI.BeginDisabledGroup(true);
//SerializedProperty paramProp = prop.FindPropertyRelative("mParameters");
EventDelegate.Parameter[] ps = del.parameters;
if (ps != null)
{
for (int i = 0; i < ps.Length; ++i)
{
EventDelegate.Parameter param = ps[i];
lineRect.yMin += lineHeight;
lineRect.yMax += lineHeight;
param.obj = EditorGUI.ObjectField(lineRect, " Arg " + i, param.obj, typeof(Object), true);
if (param.obj == null) continue;
GameObject selGO = null;
System.Type type = param.obj.GetType();
if (type == typeof(GameObject)) selGO = param.obj as GameObject;
else if (type.IsSubclassOf(typeof(Component))) selGO = (param.obj as Component).gameObject;
if (selGO != null)
{
// Parameters must be exact -- they can't be converted like property bindings
PropertyReferenceDrawer.filter = param.expectedType;
PropertyReferenceDrawer.canConvert = false;
List<PropertyReferenceDrawer.Entry> ents = PropertyReferenceDrawer.GetProperties(selGO, true, false);
int selection;
string[] props = EventDelegateEditor.GetNames(ents, NGUITools.GetFuncName(param.obj, param.field), out selection);
lineRect.yMin += lineHeight;
lineRect.yMax += lineHeight;
int newSel = EditorGUI.Popup(lineRect, " ", selection, props);
if (newSel != selection)
{
if (newSel == 0)
{
param.obj = selGO;
param.field = null;
}
else
{
param.obj = ents[newSel - 1].target;
param.field = ents[newSel - 1].name;
}
}
//.........这里部分代码省略.........