public ScreenTag CreateScreenTag(GameObject varRelativeObj, Vector3 varOffset, GameObject varView)
        {
            if (mCameraObject == null)
            {
                Helper.LogError("Please set a Camera for translating!");
                return(null);
            }
            if (varRelativeObj == null)
            {
                Helper.LogError("CreateScreenTag fail caused by null varRelativeObj");
                return(null);
            }
            if (varView == null)
            {
                Helper.LogError("CreateScreenTag fail caused by null varView");
                return(null);
            }
            //            GameObject tmpObj = new GameObject("SceneTag " + varView.GetHashCode());
            //            tmpObj.transform.SetParent (mTransform);
            varView.name = "SceneTag " + varView.GetHashCode();
            varView.transform.SetParent(mTransform);
            varView.transform.localScale = Vector3.one;
            ScreenTag tmpTag = varView.AddComponent <ScreenTag>();

            tmpTag.pOffset      = varOffset;
            tmpTag.pRelativeObj = varRelativeObj;
            tmpTag.pView        = varView;
            tmpTag.pCameraObj   = mCameraObject;
            if (mScreenTags == null)
            {
                mScreenTags = new List <ScreenTag>();
            }
            mScreenTags.Add(tmpTag);
            return(tmpTag);
        }
 public void RemoveAllScreenTags()
 {
     if (mScreenTags != null && mScreenTags.Count > 0)
     {
         for (int i = 0; i < mScreenTags.Count; i++)
         {
             ScreenTag tmpTag = mScreenTags[i];
             DestroyImmediate(tmpTag.gameObject);
         }
         mScreenTags.Clear();
     }
 }
 public void RemoveScreenTag(ScreenTag varScreenTag)
 {
     if (varScreenTag == null)
     {
         return;
     }
     if (mScreenTags == null || mScreenTags.Count == 0)
     {
         return;
     }
     mScreenTags.Remove(varScreenTag);
 }
 private void Update()
 {
     if (mCamera == null && mCameraObject != null)
     {
         mCamera = mCameraObject.GetComponentInChildren <Camera>();
     }
     if (mScreenTags != null && mScreenTags.Count > 0)
     {
         for (int i = 0; i < mScreenTags.Count; i++)
         {
             ScreenTag tmpTag = mScreenTags[i];
             if (tmpTag == null || tmpTag.mRelativeObj == null)
             {
                 continue;
             }
             if (tmpTag.mRelativeObj == null || tmpTag.mRelativeObj.transform == null)
             {
                 Destroy(tmpTag.gameObject);
                 mScreenTags.Remove(tmpTag);
             }
             Vector3 tmpWorldPos = tmpTag.mRelativeObj.transform.position;
             tmpWorldPos += tmpTag.mOffset;
             if (Helper.IsInViewPort(mCamera, tmpWorldPos) == false)
             {
                 tmpTag.gameObject.SetActive(false);
             }
             else
             {
                 if (tmpTag.gameObject.activeSelf == false)
                 {
                     tmpTag.gameObject.SetActive(true);
                 }
             }
         }
     }
 }