static GameObject CreateAgent(GameObject obj, string localPath, ResourcesPathCfg monsterResData) { UnityEngine.Object prefab = PrefabUtility.CreateEmptyPrefab(localPath); GameObject temp = PrefabUtility.ReplacePrefab(obj, prefab, ReplacePrefabOptions.ConnectToPrefab); SpriteRenderer bodySpriteRenderer = temp.transform.Find("Body").GetComponent <SpriteRenderer>(); SpriteRenderer shadowSpriteRenderer = temp.transform.Find("Shadow").GetComponent <SpriteRenderer>(); string spritePath = monsterResData.MaterialResFlieName; UnityEngine.Object [] sprites = AssetDatabase.LoadAllAssetsAtPath(spritePath); foreach (UnityEngine.Object sprite in sprites) { if (sprite.name == monsterResData.MaterialResName) { bodySpriteRenderer.sprite = sprite as Sprite; } if (sprite.name == monsterResData.ShadowName) { shadowSpriteRenderer.sprite = sprite as Sprite; } } return(temp); }
static void LoadData() { TextAsset resourcesPathConfig = AssetDatabase.LoadAssetAtPath <TextAsset>("Assets/Resources/Config/ResourcesPathCfg.txt"); foreach (string str in resourcesPathConfig.text.Split(new[] { "\n" }, StringSplitOptions.None)) { try { string str2 = str.Trim(); if (str2 == "") { continue; } ResourcesPathCfg jsonData = JsonMapper.ToObject <ResourcesPathCfg>(str2.Trim()); resourcesPathInfos.Add(jsonData.Id, jsonData); } catch (Exception e) { throw new Exception($"parser json fail: {str}", e); } } }
static void CreatePrefab(string localPath, ResourcesPathCfg monsterResData) { string towerTemplatePath = "Assets/Resources/CopyModel/Tower.prefab"; string agentTemplatePath = "Assets/Resources/CopyModel/Enemy.prefab"; GameObject obj; GameObject monster = null; if (monsterResData.Id > 2000 && monsterResData.Id < 5000) { obj = AssetDatabase.LoadAssetAtPath <GameObject>(towerTemplatePath); //塔 monster = CreateTower(obj, localPath, monsterResData); } else if (monsterResData.Id > 1000) { obj = AssetDatabase.LoadAssetAtPath <GameObject>(agentTemplatePath); //怪物 monster = CreateAgent(obj, localPath, monsterResData); } else { } if (monster == null) { return; } Animator animator = monster.GetComponent <Animator>(); RuntimeAnimatorController runtimeAnimatorController = AssetDatabase.LoadAssetAtPath <RuntimeAnimatorController> ("Assets/Resources/Model/" + monsterResData.Id + "/Animation/Controller.controller"); if (runtimeAnimatorController != null) { animator.runtimeAnimatorController = runtimeAnimatorController; } }