/// <summary> /// 添加一个士兵——————测试用 /// </summary> /// <param name="country"></param> /// <param name="x_"></param> /// <param name="y_"></param> public void addSoldier(SoldierDataBase data, Defaults.SoldierType soldierType, Vector3 point) { //复制预制件 GameObject soldierBody = ResourceManager.getInstance().getGameObject(ResourceConfig.getPrefabName(soldierType)); soldierBody.name = null; if (data == null) { return; } if (data.Country == Defaults.Country.Me) { soldierBody.name = "me" + sprId; } else { soldierBody.name = "enemy" + sprId; } sprId++; //如果取得预制件失败,返回 if (soldierBody == null) { return; } //根据兵种实例化兵种类,绑定到预制件 Type scriptType = ResourceConfig.getClassType(soldierType); soldierBody.AddComponent(scriptType); GeneralSoldier soldierScript = soldierBody.GetComponent(scriptType) as GeneralSoldier; //如果取得脚本失败,返回 if (soldierScript == null) { return; } //设置属性 soldierScript._data = data; //势力 soldierScript._data.DeadDelay = 10; soldierScript._data.SkillMgr.setSkills(soldierScript); //技能 int distance = data.Country == Defaults.Country.Me ? 14 : 26; //敌我距离 soldierBody.transform.Rotate(0, data.Country == Defaults.Country.Me ? 0 : 180, 0); //设置敌我部队的朝向 soldierBody.transform.position = point; //设置坐标 //存进士兵容器 if (data.Country == Defaults.Country.Enemy) { _enemySoldiers.Add(soldierScript); } else { _selfSoldiers.Add(soldierScript); } }
/// <summary> /// 根据兵种,取得对应的类的type /// </summary> /// <param name="soldierScript"></param> /// <returns></returns> public static System.Type getClassType(Defaults.SoldierType soldierScript) { if (_soldierScripts.ContainsKey(soldierScript)) { return(_soldierScripts[soldierScript]); } return(null); }
/// <summary> /// 根据兵种,取得预制件的名字 /// </summary> /// <param name="soldierType_"></param> /// <returns></returns> public static string getPrefabName(Defaults.SoldierType soldierType) { if (_soldierPrefabs.ContainsKey(soldierType)) { return(_soldierPrefabs[soldierType]); } return(null); }
/// <summary> /// 根据类型获取空闲的士兵 /// </summary> /// <param name="type"></param> /// <returns></returns> //public Soldier getFreeSoldier(Defaults.SoldierType type) public void getFreeSoldier(Defaults.SoldierType type) { if (type == Defaults.SoldierType.Bowman) { //return _freeBowmanPool.getFreeChild(); } if (type == Defaults.SoldierType.Cavalryman) { //return _freeCavalrymanPool.getFreeChild(); } if (type == Defaults.SoldierType.Swordman) { //return _freeSwordmanPool.getFreeChild(); } //return null; return; }
/// <summary> /// 添加一个士兵 /// </summary> /// <param name="soldierType">士兵类型</param> /// <returns>Soldier</returns> //public Soldier createSoldier(Defaults.SoldierType type) public void createSoldier(Defaults.SoldierType type) { //取得预制件名 string prefab = ResourceConfig.getPrefabName(type); //实例化预制件 GameObject gameObj = ResourceManager.getInstance().getGameObject(prefab); //缩放 // gameObj.transform.localScale = new Vector3(Defaults.SOLDIER_SCALE, Defaults.SOLDIER_SCALE, Defaults.SOLDIER_SCALE); //绑定脚本 //UnityEngineInternal.APIUpdaterRuntimeServices.AddComponent(gameObj, "add cs to soldier", ScriptsList.getScript(type)); //取得脚本 //Soldier script = (Soldier)gameObj.GetComponent(ScriptsList.getScript(type)); //script.Type = type; //return script; return; }