From e83bd6acf4401fb0e7e358bca2c0db0e23e4d18f Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期五, 01 三月 2019 18:14:54 +0800
Subject: [PATCH] 6317 【前端】【2.0】场景化单机战斗 编辑器相关内容
---
Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs | 91 +++++++++++++++++++++++++++++++++++++--------
1 files changed, 74 insertions(+), 17 deletions(-)
diff --git a/Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs b/Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs
index 25b5cef..0eee7dd 100644
--- a/Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs
+++ b/Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs
@@ -11,7 +11,7 @@
public class Bhv_Evt_RefreshMonster : Bhv_Evt
{
[HideInInspector]
- public Evt_RefreshMonster.E_OverCondition overCondition = Evt_RefreshMonster.E_OverCondition.None;
+ public Evt_RefreshMonster.E_OverCondition overCondition = Evt_RefreshMonster.E_OverCondition.DeadCount;
[HideInInspector]
public Evt_RefreshMonster.E_RefreshType refreshType = Evt_RefreshMonster.E_RefreshType.All;
[HideInInspector]
@@ -20,11 +20,15 @@
public int conditionParam;
[HideInInspector]
public int overParam;
+ [HideInInspector]
+ public int nextEventID = -1;
#if UNITY_EDITOR
[HideInInspector]
private bool showMonsterList = false;
+ private int npcID = -1;
+ private string resName;
public override void Save(BinaryWriter bw)
{
@@ -33,6 +37,7 @@
bw.Write((byte)refreshType);
bw.Write(conditionParam);
bw.Write(overParam);
+ bw.Write(nextEventID);
bw.Write(monsterList.Count);
foreach (var _monster in monsterList)
{
@@ -47,6 +52,7 @@
bw.Write((byte)refreshType);
bw.Write(conditionParam);
bw.Write(overParam);
+ bw.Write(nextEventID);
bw.Write(monsterList.Count);
foreach (var _monster in monsterList)
{
@@ -61,6 +67,7 @@
refreshType = (Evt_RefreshMonster.E_RefreshType)br.ReadByte();
conditionParam = br.ReadInt32();
overParam = br.ReadInt32();
+ nextEventID = br.ReadInt32();
int _count = br.ReadInt32();
for (int i = 0; i < _count; ++i)
{
@@ -130,21 +137,33 @@
}
EditorGUILayout.EndHorizontal();
+ EditorGUILayout.BeginHorizontal(guiSkin.customStyles[1], GUILayout.Height(22));
+ EditorGUILayout.LabelField("涓嬩竴浜嬩欢", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(60));
+ nextEventID = EditorGUILayout.IntField(nextEventID, guiSkin.textField, GUILayout.Height(22));
+ EditorGUILayout.EndHorizontal();
+
EditorGUILayout.BeginVertical(guiSkin.customStyles[1]);
+
EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
showMonsterList = EditorGUILayout.Foldout(showMonsterList, " 鍒锋�垪琛�", true, guiSkin.customStyles[3]);
+ EditorGUILayout.LabelField("NPCID", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(50));
+ npcID = EditorGUILayout.IntField(npcID, guiSkin.textField, GUILayout.Height(22), GUILayout.Width(70));
+ EditorGUILayout.LabelField("妯″瀷鍚�", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(50));
+ resName = EditorGUILayout.TextField(resName, guiSkin.textField, GUILayout.Height(22), GUILayout.Width(70));
if (GUILayout.Button("娣诲姞", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
{
- var _go = new GameObject("RefreshMonster");
- _go.transform.SetParent(transform);
- _go.transform.localPosition = Vector3.zero;
- _go.transform.eulerAngles = Vector3.zero;
- _go.transform.localScale = Vector3.one;
+ var _monsterData = CreateNPC(npcID, resName);
+ if (_monsterData)
+ {
+ monsterList.Add(_monsterData);
+ showMonsterList = true;
- var _monsterData = _go.AddComponent<Bhv_MonsterData>();
- monsterList.Add(_monsterData);
-
- showMonsterList = true;
+ Selection.activeGameObject = _monsterData.gameObject;
+ if (Selection.activeGameObject)
+ {
+ SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
+ }
+ }
}
EditorGUILayout.EndHorizontal();
if (showMonsterList)
@@ -152,13 +171,10 @@
for (int i = monsterList.Count - 1; i >= 0; --i)
{
EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
- EditorGUILayout.LabelField("NPCID", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(60));
- var _npcID = monsterList[i].npcID;
- monsterList[i].npcID = EditorGUILayout.IntField(monsterList[i].npcID, guiSkin.textField, GUILayout.Height(20));
- if (_npcID != monsterList[i].npcID)
- {
- monsterList[i].name = monsterList[i].npcID + "_RefreshNPC";
- }
+ EditorGUILayout.LabelField("NPCID", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(50));
+ EditorGUILayout.LabelField(monsterList[i].npcID.ToString(), guiSkin.textField, GUILayout.Height(20));
+ EditorGUILayout.LabelField("妯″瀷鍚�", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(50));
+ EditorGUILayout.LabelField(monsterList[i].resName, guiSkin.textField, GUILayout.Height(22), GUILayout.Width(70));
if (GUILayout.Button("瀹氶珮", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
{
Vector3 _pos = monsterList[i].transform.position;
@@ -194,6 +210,47 @@
EditorGUILayout.EndVertical();
return _result;
}
+
+ private Bhv_MonsterData CreateNPC(int id, string name)
+ {
+ if (id <= 0)
+ {
+ Debug.Log("NPCID闈炴硶");
+ return null;
+ }
+
+ if (string.IsNullOrEmpty(name.Trim()))
+ {
+ Debug.Log("妯″瀷鍚嶄笉搴旇涓虹┖");
+ return null;
+ }
+
+ string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + name + ".prefab";
+ var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
+ if (!_obj)
+ {
+ Debug.LogError("鎵�瑕佸垱寤虹殑璧勬簮涓嶅瓨鍦�: " + _path);
+ return null;
+ }
+
+ _obj = Instantiate(_obj);
+
+ RaycastHit _hit;
+ Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
+ if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
+ {
+ _obj.transform.position = _hit.point;
+ }
+ _obj.transform.SetParent(transform);
+ _obj.transform.eulerAngles = Vector3.zero;
+ _obj.transform.localScale = Vector3.one;
+
+ var _monsterData = _obj.AddComponent<Bhv_MonsterData>();
+ _monsterData.npcID = id;
+ _monsterData.resName = name;
+
+ return _monsterData;
+ }
#endif
}
}
\ No newline at end of file
--
Gitblit v1.8.0