using UnityEngine; using System.Collections; using Games.LogicObj; using GCGame.Table; public class BillBoard : MonoBehaviour { private GameObject m_BindObj = null; public GameObject BindObj { get { return m_BindObj; } set { m_BindObj = value; #if UNITY_WP8 && !UNITY_EDITOR if (m_BindObj != null) m_BindObjTrans = m_BindObj.transform; #endif } } private float m_fDeltaHeight = 0.0f; public float fDeltaHeight { set{ if(value != m_fDeltaHeight) { m_fDeltaHeight = value; m_Position = new Vector3(0,m_fDeltaHeight,0); } } get { return m_fDeltaHeight; } } void Awake() { if (null == Camera.main) { return; } transform.rotation = Quaternion.Euler(Vector3.zero); } void OnEnable() { transform.rotation = Quaternion.identity; if (null == Camera.main) { return; } transform.rotation = Quaternion.Euler(Vector3.zero); } void Start() { if (m_BindObj != null) { Obj_OtherPlayer objOtherPlayer = m_BindObj.GetComponent(); if (null != objOtherPlayer) { // 关于直接创建坐骑上的玩家的名字板高度修正 应该也会执行一次Obj_Mount的RideMount 相当于设置了两次高度 没什么大影响 暂时不删除此处 m_fDeltaHeight = objOtherPlayer.DeltaHeight + objOtherPlayer.GetMountNameBoardHeight(); } else { Obj_Character objCharacter = m_BindObj.GetComponent(); if (null != objCharacter) { m_fDeltaHeight = objCharacter.DeltaHeight; } } m_Position = new Vector3(0,m_fDeltaHeight,0); m_BindObjTrans = m_BindObj.transform; } m_Transform = GetComponent(); } private RectTransform m_Transform = null; private Vector3 m_Position ; private Transform m_BindObjTrans = null; // Update is called once per frame void Update () { if (null != m_BindObj && null == m_BindObjTrans) { m_BindObjTrans = m_BindObj.transform; } if(m_BindObj==null) { gameObject.SetActive(false); GameObject.Destroy(gameObject); } if (m_BindObj && null != m_Transform && null != m_BindObjTrans) { Vector3 worldPos = m_BindObjTrans.position + m_Position; if(UIManager.Instance()!=null) { var screenPoint = UIManager.Instance().WorldToUiPoint(worldPos); m_Transform.anchoredPosition = screenPoint; } } } public void RecoverHeight() { if (m_BindObj != null) { Obj_Character objChar = m_BindObj.GetComponent(); if (null != objChar) { fDeltaHeight = objChar.DeltaHeight; } } } }