コード例 #1
0
    public static void OnAwake(KMonoBehaviour c)
    {
        Type type = c.GetType();

        FieldData[] fields = GetFields(type);
        FieldData[] array  = fields;
        foreach (FieldData fieldData in array)
        {
            CmpFns    cmpFns    = fieldData.cmpFns;
            FieldInfo fieldInfo = fieldData.fieldInfo;
            if (!((UnityEngine.Object)(Component) fieldInfo.GetValue(c) != (UnityEngine.Object)null))
            {
                if (fieldData.myCmpType == MyCmpType.Add)
                {
                    Component value = cmpFns.mFindOrAddFn(c);
                    fieldInfo.SetValue(c, value);
                }
                else if (fieldData.myCmpType == MyCmpType.Req)
                {
                    Component value2 = cmpFns.mFindFn(c);
                    fieldInfo.SetValue(c, value2);
                }
                else if (fieldData.myCmpType == MyCmpType.Get)
                {
                    Component value3 = cmpFns.mFindFn(c);
                    fieldInfo.SetValue(c, value3);
                }
            }
        }
    }
コード例 #2
0
    public static CmpFns GetCmpFns(Type type)
    {
        CmpFns value = null;

        if (!sCmpFns.TryGetValue(type, out value))
        {
            value         = new CmpFns(type);
            sCmpFns[type] = value;
        }
        return(value);
    }
コード例 #3
0
    public static void OnStart(KMonoBehaviour c)
    {
        Type type = c.GetType();

        FieldData[] fields = GetFields(type);
        FieldData[] array  = fields;
        foreach (FieldData fieldData in array)
        {
            CmpFns    cmpFns    = fieldData.cmpFns;
            FieldInfo fieldInfo = fieldData.fieldInfo;
            if ((UnityEngine.Object)(Component) fieldInfo.GetValue(c) != (UnityEngine.Object)null)
            {
                Component cmp = fieldInfo.GetValue(c) as Component;
                Util.SpawnComponent(cmp);
            }
            else if (fieldData.myCmpType == MyCmpType.Add)
            {
                Component cmp2 = cmpFns.mFindOrAddFn(c);
                Util.SpawnComponent(cmp2);
            }
            else if (fieldData.myCmpType == MyCmpType.Req)
            {
                Component component = cmpFns.mRequireFn(c);
                if ((UnityEngine.Object)component == (UnityEngine.Object)null)
                {
                    Debug.LogError("The behaviour " + type.ToString() + " required but couldn't find a " + fieldInfo.FieldType.Name);
                }
                Util.SpawnComponent(component);
                fieldInfo.SetValue(c, component);
            }
            else if (fieldData.myCmpType == MyCmpType.Get)
            {
                Component component2 = cmpFns.mFindFn(c);
                Util.SpawnComponent(component2);
                fieldInfo.SetValue(c, component2);
            }
        }
    }