DogInitialize.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using UnityEngine;
  2. /* 本类用于动态加载狗
  3. * 初始化狗的基础模型和颜色
  4. * 场景中特殊的components 需要在场景单独的程序中加载
  5. * 狗的breed和skin大小写需要注意
  6. */
  7. public class DogInitialize: MonoBehaviour {
  8. public Vector3 position, rotation, scale = new Vector3(1,1,1) ; // 狗初始化位置
  9. public string dogDisplayName; // 狗的id指的是调用用户拥有的狗的id dogName是狗在场景中的显示名
  10. private DogProperty dogProperty;
  11. public bool loadAllDogs = false; // 是否读取所有的狗,如果否就读取focusDog,否则读取全部狗
  12. // Start is called once before the first execution of Update after the MonoBehaviour is created
  13. void Start()
  14. {
  15. if (loadAllDogs)
  16. {
  17. foreach (var dog in UserProperty.dogs)
  18. {
  19. dogProperty = dog;
  20. InitialDog();
  21. }
  22. }
  23. else
  24. {
  25. dogProperty = UserProperty.dogs[GameData.focusDog];
  26. InitialDog();
  27. }
  28. }
  29. // Update is called once per frame
  30. //void Update()
  31. //{
  32. //}
  33. // 初始化狗,并显示在屏幕上
  34. public void InitialDog()
  35. {
  36. if (this.dogProperty != null)
  37. {
  38. var puppy = this.dogProperty;
  39. GameObject dog = Instantiate(Resources.Load<GameObject>("Dog/Breed/" + puppy.breed));
  40. if (!string.IsNullOrWhiteSpace(dogDisplayName))
  41. {
  42. dog.name = dogDisplayName;
  43. }
  44. else
  45. {
  46. dog.name = puppy.name;
  47. }
  48. if (dog != null)
  49. {
  50. GameObject dogL2 = dog.transform.Find(puppy.breed).gameObject;
  51. Renderer renderer = dogL2.GetComponent<Renderer>();
  52. //Texture skin = Resources.Load<Texture>("Dog/Skin/" + puppy.breed + "/" + puppy.skin);
  53. Material mat = Resources.Load<Material>("Dog/Skin/" + puppy.breed + "/" + puppy.skin);
  54. if (mat != null && renderer != null)
  55. {
  56. //renderer.material.mainTexture = skin;
  57. renderer.material = mat;
  58. }
  59. }
  60. dog.transform.localPosition = position;
  61. dog.transform.localRotation = Quaternion.Euler(rotation);
  62. dog.transform.localScale = scale;
  63. }
  64. }
  65. }