Beispiel #1
0
    public override void OnInspectorGUI()
    {
        FuncCaller Target = (FuncCaller)target;

        comps = Target.gameObject.GetComponents <Component>();

        List <GUIContent> guiContents = new List <GUIContent>();

        foreach (Component comp in comps)
        {
            guiContents.Add(new GUIContent(comp.ToString()));
        }

        int newCompIndex = EditorGUILayout.Popup(CompIndex, guiContents.ToArray());

        if (newCompIndex != CompIndex)
        {
            CompIndex = newCompIndex;
            Component comp = comps[CompIndex];
            methods = comp.GetType().GetMethods();
            //System.Reflection.BindingFlags.DeclaredOnly |
            //System.Reflection.BindingFlags.Public);
        }

        if (methods != null)
        {
            List <GUIContent> guiContents2 = new List <GUIContent>();
            foreach (MethodInfo method in methods)
            {
                guiContents2.Add(new GUIContent(method.Name));
            }

            FuncIndex = EditorGUILayout.Popup(FuncIndex, guiContents2.ToArray());

            if (FuncIndex != -1)
            {
                if (GUILayout.Button("调用"))
                {
                    methods[FuncIndex].Invoke(comps[CompIndex], null);
                }
            }
        }
    }
Beispiel #2
0
        public EvaluationResult Evaluate(EvaluationState state, ReadOnlyList <IEvaluate> args, ReadOnlyList <Object> data)
        {
            Combat.Character character = state.Character as Combat.Character;
            if (character == null)
            {
                return(new EvaluationResult());
            }

            EvaluationResult result = args[1].Evaluate(state);

            if (result.ResultType == ResultType.None)
            {
                return(new EvaluationResult());
            }

            FuncCaller varcaller = args[0] as FuncCaller;

            if (varcaller == null)
            {
                return(new EvaluationResult());
            }

            if (varcaller.Function is Triggers.Var)
            {
                EvaluationResult varindex = varcaller.Args[0].Evaluate(state);
                if (varindex.ResultType == ResultType.None)
                {
                    return(new EvaluationResult());
                }

                if (character.Variables.SetInterger(varindex.IntValue, false, result.IntValue) == false)
                {
                    return(new EvaluationResult());
                }
            }
            else if (varcaller.Function is Triggers.FVar)
            {
                EvaluationResult varindex = varcaller.Args[0].Evaluate(state);
                if (varindex.ResultType == ResultType.None)
                {
                    return(new EvaluationResult());
                }

                if (character.Variables.SetFloat(varindex.IntValue, false, result.FloatValue) == false)
                {
                    return(new EvaluationResult());
                }
            }
            else if (varcaller.Function is Triggers.SysVar)
            {
                EvaluationResult varindex = varcaller.Args[0].Evaluate(state);
                if (varindex.ResultType == ResultType.None)
                {
                    return(new EvaluationResult());
                }

                if (character.Variables.SetInterger(varindex.IntValue, true, result.IntValue) == false)
                {
                    return(new EvaluationResult());
                }
            }
            else if (varcaller.Function is Triggers.SysFVar)
            {
                EvaluationResult varindex = varcaller.Args[0].Evaluate(state);
                if (varindex.ResultType == ResultType.None)
                {
                    return(new EvaluationResult());
                }

                if (character.Variables.SetFloat(varindex.IntValue, true, result.FloatValue) == false)
                {
                    return(new EvaluationResult());
                }
            }
            else
            {
                return(new EvaluationResult());
            }

            return(result);
        }