using Axibug.Runtime; using Bright.Serialization; using System.IO; using Game.Config; using System.Collections.Generic; using System.Linq; using UnityEngine; using static Axibug.Utility; using UnityEditor; using Axibug.Resources; namespace Game { public class MainPlayerComponent : GameComponent { public Transform CamPos; public Transform Player; Rigidbody mRigidbody; public bool bLoadFinish { get; private set; } = false; private void OnEnable() { CamPos = transform.Find("CamPos"); } void Start() { } public void LoadPlayer() { bLoadFinish = false; //TODO Òì²½ GameObject playergo = Clone("MyKnight"); playergo.transform.localPosition = Vector3.zero; this.transform.position = GamePlayEntry.Map.SpawnPos; mRigidbody = this.gameObject.AddComponent(); mRigidbody.isKinematic = false; mRigidbody.useGravity = true; ////ÉãÏñ»ú Camera.main.transform.parent = CamPos; Camera.main.transform.localPosition = Vector3.zero; Camera.main.transform.localEulerAngles = Vector3.zero; bLoadFinish = true; } private GameObject Clone(string RoleName) { string rootPath = "Assets/GameAssets"; string MapName = $"Assets/GameAssets/Prefabs/Role/{RoleName}.prefab"; string tmp = MapName.Remove(0, rootPath.Length + 1); int idx = tmp.LastIndexOf('/'); string bundleName = tmp.Substring(0, idx); UnityEngine.Object asset = null; if (AppEntry.Base.EditorResourceMode) { #if UNITY_EDITOR asset = AssetDatabase.LoadAssetAtPath(MapName); #endif } else { int id = MapName.GetHashCode(); asset = PrefabManager.LoadPrefab(bundleName.ToLower(), MapName, id, this.transform); } if (asset == null) { Debug.LogError($"asset¼ÓÔØʧ°Ü£¬path={MapName}"); return null; } GameObject go = Instantiate(asset, this.transform) as GameObject; if (go == null) { Debug.LogError("LoadPrefabByEditor2. go == null. asset:" + asset); } return go; } } }