using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class FunctionSync_Parent : OneValueSyncObject { /// /// 是否为父物体 /// public bool isParent; private OneValueSyncObject localposSync; private OneValueSyncObject localangSync; private void Start() { Init(); } public void Init() { if(!hasInit) { InitDynamic("parent_" + gameObject.name, CallBackParent, ValueType.String); if (!isParent) { localposSync = gameObject.AddComponent(); localposSync.InitDynamic(Id + "pos", CallBackPos, ValueType.Vector3); localangSync = gameObject.AddComponent(); localangSync.InitDynamic(Id + "ang", CallBackAng, ValueType.Vector3); } } } /// /// 设置父物体 /// /// /// /// public void SetParent(FunctionSync_Parent parent, Vector3 Localpos,Vector3 LocalEulerAngles) { if(!isParent) { transform.parent = parent.transform; transform.localPosition = Localpos; transform.localEulerAngles = LocalEulerAngles; mystring = parent.Id; SendSync(); SetLocalPos(Localpos); SetLocalAng(LocalEulerAngles); } else { Debug.LogError("父物体不能再设置父物体"); } } /// /// 设置局部坐标 /// public void SetLocalPos(Vector3 localpos) { localposSync.myvector3 = localpos; localposSync.SendSync(); } /// /// 设置局部旋转 /// public void SetLocalAng(Vector3 localang) { localangSync.myvector3 = localang; localangSync.SendSync(); } private void CallBackParent(string id, bool isEnterRoom) { if (!isParent) { transform.parent = OneValueSyncObject.OneAxisSyncObjectList[mystring].transform; } } private void CallBackPos(string id, bool isEnterRoom) { if (!isParent) { transform.localPosition = localposSync.myvector3; } } private void CallBackAng(string id, bool isEnterRoom) { if (!isParent) { transform.localEulerAngles = localangSync.myvector3; } } }