Esempio n. 1
0
    // private Shield _shield;
    // private HashSet<Buff> _buffs = new HashSet<Buff>();

    /// <summary>
    /// 设置坦克数据
    /// </summary>
    // public void SetData(DataSetTank dataSet, string fsmName, TankSide side = TankSide.Enemy)
    // {
    //     Rigidbody = StateMachine.GetComponent<Rigidbody2D>();
    //     Renderer = StateMachine.GetComponent<SpriteRenderer>();
    //     Collider2D = StateMachine.GetComponent<BoxCollider2D>();
    //
    //     _dataSet = dataSet;
    //     if (_dataSet.Shield && _dataSet.Shield.ShieldValue > 0)
    //     {
    //         _shield = StateMachine.GetComponentByChild<Shield>("护盾");
    //         _shield.Generate(_dataSet.Shield);
    //     }
    //     else
    //     {
    //         _shield = null;
    //     }
    //     Side = side;
    //     MaxHP = HP = _dataSet.HP;
    //     Speed = _dataSet.Speed;
    //     StateMachine.Name = fsmName;
    //
    //     Renderer.sprite = _dataSet.Picture;
    //     Collider2D.size = _dataSet.Picture.rect.size * 0.01f;
    // }

    /// <summary>
    /// 生成行为控制器
    /// </summary>
    public void GenerateController()
    {
        if (Controller == null)
        {
            if (Side == TankSide.Enemy)
            {
                Type type = ReflectionToolkit.GetTypeInRunTimeAssemblies(_dataSet.AIController);
                Controller = Activator.CreateInstance(type) as TankController;
            }
            else
            {
                Controller = new PlayerController();
            }
            Controller.InitControll(this);
        }
    }
        protected override void OnInspectorDefaultGUI()
        {
            base.OnInspectorDefaultGUI();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Evaluation Type", GUILayout.Width(100));
            if (GUILayout.Button(Target.EvaluationType, EditorGlobalTools.Styles.MiniPopup))
            {
                GenericMenu gm    = new GenericMenu();
                List <Type> types = ReflectionToolkit.GetTypesInRunTimeAssemblies(type =>
                {
                    return(type.IsSubclassOf(typeof(AStarEvaluation)));
                });
                for (int i = 0; i < types.Count; i++)
                {
                    int j = i;
                    gm.AddItem(new GUIContent(types[j].FullName), Target.EvaluationType == types[j].FullName, () =>
                    {
                        Undo.RecordObject(target, "Set Evaluation");
                        Target.EvaluationType = types[j].FullName;
                        HasChanged();
                    });
                }
                gm.ShowAsContext();
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Size", GUILayout.Width(100));
            Vector2Field(Target.Size, out Target.Size, "");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Node Radius", GUILayout.Width(100));
            FloatField(Target.NodeRadius, out Target.NodeRadius, "");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Ignore Oblique", GUILayout.Width(100));
            Toggle(Target.IsIgnoreOblique, out Target.IsIgnoreOblique, "");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Auto Generate", GUILayout.Width(100));
            Toggle(Target.IsAutoGenerate, out Target.IsAutoGenerate, "");
            GUILayout.EndHorizontal();
        }
    protected override void OnInspectorDefaultGUI()
    {
        base.OnInspectorDefaultGUI();

        PropertyField("Picture", "超武图像");
        PropertyField("ExplodePicture", "爆炸特效图像");
        PropertyField("Attack", "攻击力");
        PropertyField("Speed", "飞行力");
        PropertyField("CoolingTime", "冷却时间");
        PropertyField("ShootSound", "射击音效");
        PropertyField("ExplodeSound", "爆炸音效");

        GUILayout.BeginHorizontal();
        GUILayout.Label("描述信息", GUILayout.Width(100));
        Target.Info = EditorGUILayout.TextArea(Target.Info);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("携带BUFF类型", GUILayout.Width(100));
        if (GUILayout.Button(Target.BuffType, EditorGlobalTools.Styles.MiniPopup))
        {
            GenericMenu gm    = new GenericMenu();
            List <Type> types = ReflectionToolkit.GetTypesInRunTimeAssemblies();
            for (int i = 0; i < types.Count; i++)
            {
                // if (types[i].IsSubclassOf(typeof(Buff)))
                // {
                //     Type type = types[i];
                //     gm.AddItem(new GUIContent(type.FullName), type.FullName == Target.BuffType, () =>
                //     {
                //         Target.BuffType = type.FullName;
                //         HasChanged();
                //     });
                // }
            }
            gm.ShowAsContext();
        }
        GUILayout.EndHorizontal();

        if (GUI.changed)
        {
            HasChanged();
        }
    }
        private void Awake()
        {
            DontDestroyOnLoad(gameObject);

            Current = this;

            Type type = ReflectionToolkit.GetTypeInRunTimeAssemblies(XHotfixLoaderType);

            if (type != null)
            {
                if (type.IsSubclassOf(typeof(XHotfixLoaderBase)))
                {
                    _loader = Activator.CreateInstance(type) as XHotfixLoaderBase;
                }
                else
                {
                    Log.Error("创建XLua加载器失败:XLua加载器类 " + XHotfixLoaderType + " 必须继承至加载器基类:XHotfixLoaderBase!");
                }
            }
            else
            {
                Log.Error("创建XLua加载器失败:丢失XLua加载器类 " + XHotfixLoaderType + "!");
            }

            _luaEnv = new LuaEnv();
            _luaEnv.AddLoader(_loader.OnLoadRequire);
            _luaTable = _luaEnv.NewTable();

            LuaTable meta = _luaEnv.NewTable();

            meta.Set("__index", _luaEnv.Global);
            _luaTable.SetMetaTable(meta);
            meta.Dispose();

            if (Main.m_Resource.LoadMode == ResourceLoadMode.Resource)
            {
                Log.Error("热更新初始化失败:热更新代码不支持使用Resource加载模式!");
                return;
            }
        }
Esempio n. 5
0
        private void Awake()
        {
            Type type = ReflectionToolkit.GetTypeInRunTimeAssemblies(EvaluationType);

            if (type != null)
            {
                _evaluation = Activator.CreateInstance(type) as AStarEvaluation;
                if (_evaluation == null)
                {
                    Log.Error("A*:初始化网格失败,丢失了估价算法 " + EvaluationType);
                    return;
                }
            }
            else
            {
                Log.Error("A*:初始化网格失败,丢失了估价算法 " + EvaluationType);
                return;
            }

            if (IsAutoGenerate)
            {
                GenerateGrid();
            }
        }
Esempio n. 6
0
    protected override void OnInspectorDefaultGUI()
    {
        base.OnInspectorDefaultGUI();

        PropertyField("Picture", "坦克图像");
        PropertyField("ExplodePicture", "爆炸特效图像");
        PropertyField("HP", "生命力");
        PropertyField("Speed", "行动力");
        PropertyField("Info", "介绍");
        PropertyField("Weapon", "常规主炮");
        PropertyField("SuperWeapon", "超级武器");
        PropertyField("Shield", "能量护盾");
        PropertyField("ExplodeSound", "爆炸音效");

        GUILayout.BeginHorizontal();
        GUILayout.Label("大脑(AI控制时)", GUILayout.Width(100));
        if (GUILayout.Button(Target.AIController, EditorGlobalTools.Styles.MiniPopup))
        {
            GenericMenu gm    = new GenericMenu();
            List <Type> types = ReflectionToolkit.GetTypesInRunTimeAssemblies();
            for (int i = 0; i < types.Count; i++)
            {
                if (types[i].IsSubclassOf(typeof(TankController)) && types[i] != typeof(PlayerController))
                {
                    Type type = types[i];
                    gm.AddItem(new GUIContent(type.FullName), type.FullName == Target.AIController, () =>
                    {
                        Target.AIController = type.FullName;
                        HasChanged();
                    });
                }
            }
            gm.ShowAsContext();
        }
        GUILayout.EndHorizontal();
    }
        protected override void OnInspectorDefaultGUI()
        {
            base.OnInspectorDefaultGUI();

            GUILayout.BeginHorizontal();
            EditorGUILayout.HelpBox("XHotfix manager, this module encapsulated using XLua!", MessageType.Info);
            GUILayout.EndHorizontal();

            GUILayout.BeginVertical("box");

            #region XHotfixProperty
            GUILayout.BeginHorizontal();
            GUILayout.Label("Loader Type", GUILayout.Width(100));
            if (GUILayout.Button(Target.XHotfixLoaderType, EditorGlobalTools.Styles.MiniPopup))
            {
                GenericMenu gm    = new GenericMenu();
                List <Type> types = ReflectionToolkit.GetTypesInRunTimeAssemblies(type =>
                {
                    return(type.IsSubclassOf(typeof(XHotfixLoaderBase)));
                });
                for (int i = 0; i < types.Count; i++)
                {
                    int j = i;
                    gm.AddItem(new GUIContent(types[j].FullName), Target.XHotfixLoaderType == types[j].FullName, () =>
                    {
                        Undo.RecordObject(target, "Set XHotfixLoader");
                        Target.XHotfixLoaderType = types[j].FullName;
                        HasChanged();
                    });
                }
                gm.ShowAsContext();
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Auto StartUp", GUILayout.Width(100));
            Toggle(Target.IsAutoStartUp, out Target.IsAutoStartUp, "");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Tick Interval", GUILayout.Width(100));
            FloatField(Target.TickInterval, out Target.TickInterval, "");
            GUILayout.EndHorizontal();
            #endregion

            GUILayout.Space(10);

            #region XHotfixAssetBundle
            GUILayout.BeginHorizontal();
            GUILayout.Label("XHotfixCode AssetBundleName");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            TextField(Target.HotfixCodeAssetBundleName, out Target.HotfixCodeAssetBundleName, "");
            GUI.enabled = _hotfixIsCreated;
            if (GUILayout.Button("Mark All", EditorStyles.miniButton, GUILayout.Width(60)))
            {
                MarkLuaFolder(new DirectoryInfo(Application.dataPath + Target.HotfixCodeAssetsPath.Replace("Assets", "") + "/"));
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("XHotfixCode AssetsPath");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            TextField(Target.HotfixCodeAssetsPath, out Target.HotfixCodeAssetsPath, "");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("XHotfixCode Main");
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            TextField(Target.HotfixCodeMain, out Target.HotfixCodeMain, "");
            GUILayout.EndHorizontal();
            #endregion

            GUILayout.EndVertical();

            #region XHotfixWizard
            if (_hotfixIsCreated)
            {
                GUILayout.BeginHorizontal();
                EditorGUILayout.HelpBox("XHotfix environment is created!", MessageType.Info);
                GUILayout.EndHorizontal();
            }
            else
            {
                GUILayout.BeginHorizontal();
                if (GUILayout.Button("Create XHotfix Environment", "LargeButton"))
                {
                    CreateXHotfixEnvironment();
                    _hotfixIsCreated = true;
                }
                GUILayout.EndHorizontal();
            }
            #endregion
        }