using UnityEngine; using System.Collections; /* 加载bathroom场景下狗的特定的component * 本代码需要挂在到场景中任意Game Object下。建议挂载在Player下 */ public class BathroomDogComponentInstaller : MonoBehaviour { public string displayDogName; // 在gameobject中显示的名字 private DogProperty dogProperty; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { dogProperty = UserProperty.dogs[GameData.focusDog]; StartCoroutine(DogComponentAdd()); } // Update is called once per frame //void Update() //{ //} IEnumerator DogComponentAdd() { // 等待一帧,确保所有 Start() 方法都执行完成 yield return null; // 第一帧以后开始执行 GameObject dog = GameObject.Find(displayDogName); // 加载指定的Animator controller Animator animator = dog.GetComponent(); RuntimeAnimatorController animatorController = Resources.Load("Dog/AnimatorController/shibaInu/BathroomDogBehavior"); if (dogProperty.breed == "shibaInu") { animatorController = Resources.Load("Dog/AnimatorController/shibaInu/BathroomDogBehavior"); } animator.runtimeAnimatorController = animatorController; // 加载bbx collider BoxCollider[] boxCollider = new BoxCollider[4]; boxCollider[0] = dog.AddComponent(); boxCollider[0].isTrigger = false; boxCollider[0].center = new Vector3(0, 0.3f, 0.05f); boxCollider[0].size = new Vector3(0.15f, 0.21f, 0.5f); // 加载bbx collider 1 boxCollider[1] = dog.AddComponent(); boxCollider[1].isTrigger = false; boxCollider[1].center = new Vector3(0, 0.4f, 0.24f); boxCollider[1].size = new Vector3(0.15f, 0.18f, 0.16f); // 加载bbx collider 2 boxCollider[2] = dog.AddComponent(); boxCollider[2].isTrigger = false; boxCollider[2].center = new Vector3(0, 0.1f, 0.13f); boxCollider[2].size = new Vector3(0.15f, 0.18f, 0.06f); // 加载bbx collider 3 boxCollider[3] = dog.AddComponent(); boxCollider[3].isTrigger = false; boxCollider[3].center = new Vector3(0, 0.1f, -0.17f); boxCollider[3].size = new Vector3(0.15f, 0.18f, 0.06f); // 加载script //DogCatchDetection dogScript = dog.AddComponent(); } }