public override void Read(XmlNode os) { foreach (XmlNode current in XmlObject.GetChilds(os)) { switch (current.Name) { case "Index": this.Index = ReadInt(current); break; case "IndexName": this.IndexName = ReadString(current); break; case "Delay": this.Delay = ReadFloat(current); break; case "Spawn": this.Spawn = (MonsterWaveSpawnType)ReadInt(current); break; case "Monsters": { XmlObject.GetChilds(current).ForEach(delegate(XmlNode pNode) { MapMonsterCall data = new MapMonsterCall(); data.Read(pNode); Monsters.Add(data); }); } break; } } }
public override void Import(XmlObject pData, bool pBuild) { MapMonsterWave data = pData as MapMonsterWave; Index = data.Index; IndexName = data.IndexName; Delay = data.Delay; Spawn = data.Spawn; this.Build(); this.SetName(); if (pBuild) { for (int i = 0; i < data.Monsters.Count; i++) { GameObject go = gameObject.AddChild(); LevelMonsterCall pCall = go.AddComponent <LevelMonsterCall>(); pCall.Import(data.Monsters[i], pBuild); } } }
public override void OnInspectorGUI() { LevelWave pElem = target as LevelWave; int pIndex = EditorGUILayout.IntField("波次索引", pElem.Index); if (pElem.Index != pIndex) { pElem.Index = pIndex; pElem.SetName(); } string pIndexName = EditorGUILayout.TextField("波次名字", pElem.IndexName); if (pElem.IndexName != pIndexName) { pElem.IndexName = pIndexName; } float pDelay = EditorGUILayout.FloatField("距离上一波次结束的延迟", pElem.Delay); if (pElem.Delay != pDelay) { pElem.Delay = pDelay; } ESpawn pChineseSpawn = (ESpawn)pElem.Spawn; MonsterWaveSpawnType pSpawn = (MonsterWaveSpawnType)EditorGUILayout.EnumPopup("怪物刷新方式", pChineseSpawn); if (pElem.Spawn != pSpawn) { pElem.Spawn = pSpawn; } EditorGUILayout.Space(); if (GUILayout.Button("添加怪物")) { LevelMonsterCall pMonster = pElem.AddElement(); pMonster.SetName(); } }