// 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; } }
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(); } }
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 }