using System.Collections; using UnityEngine; public class MainToFarm : MonoBehaviourSingletonTemplate { GameObject go_farmer, go_obj; int curFarmerID; private void Start() { Set_MyFarmer(); Set_Obj(); } public void Set_MyFarmer() { Make_Farmer(ServerInfo.Ins.m_ServerData.Get_EqiupmentEquip(eItem.Farmer), false); } public void Set_Stone(float delayTime = 10f) { StartCoroutine(Co_SetStone(delayTime)); } IEnumerator Co_SetStone(float delayTime) { yield return new WaitForSeconds(delayTime); Set_Obj(); } public void Set_Obj() { if (DSUtil.CheckNull(go_obj)) AddrResourceMgr.Ins.LoadObject("Assets/Res_Addr/Obj/FarmObj.prefab", handle => { var obj = DSUtil.Get_Clone(handle.Result); ActorInfo.Ins.Add_Actor(obj.GetComponent(), eRole.OBJ, 0, "FarmObj"); Set_Obj(obj); }); else Set_Obj(go_obj); } void Set_Obj(GameObject obj) { go_obj = obj; LoadMapMgr.Ins.Get_tfObj(MyValue.MyChoiceMapData, 0, tf => { go_obj.transform.parent = tf; var actor = go_obj.GetComponent(); actor.Set(ServerInfo.Ins.m_ServerData.Get_FarmMaxSlot(), tf.position); }); } public void Make_Farmer(int id, bool warpPC) { if (id > 0 && curFarmerID != id) { curFarmerID = id; Destroy(go_farmer); var data = table_farmerlist.Ins.Get_Data_orNull(curFarmerID); AddrResourceMgr.Ins.LoadObject(data.s_Prefab, handle => { LoadMapMgr.Ins.Get_tfFarmer(MyValue.MyChoiceMapData, tf => { go_farmer = DSUtil.Get_Clone(handle.Result, tf); }); }); Resources.UnloadUnusedAssets(); } //if (warpPC) WarpToFarm(0); } public void WarpToFarm(int index) { MyValue.MyPC.Set_AutoBraking(false); MyValue.MyPC.Play_Idle(); MyValue.MyChoiceMapData.n_PortalIndex = index; LoadMapMgr.Ins.Get_PortalPos(MyValue.MyChoiceMapData, portalpos => { MyValue.MyPC.Set_Warp(portalpos); MyValue.m_RealCamera.Set_Target(MyValue.MyPC.transform, LoadMapMgr.Ins.Get_MapZoneData(MyValue.MyChoiceMapData).CamRot_Portal); // #763 — 펫이 없을 수 있다(펫 미보유 계정 · WLGameplaySettings.spawnPlayerPet = false). Get_Actor 는 null 을 돌려준다. var pet = ActorInfo.Ins.Get_Actor(eRole.Pet); if (!DSUtil.CheckNull(pet)) { if (index == 1) { pet.gameObject.SetActive(true); pet.Set_Warp(portalpos + Vector3.back); } else pet.Off(); } }); } }