zoukankan      html  css  js  c++  java
  • unity UGUI UI跟随

    实现2dUI跟随游戏中角色的移动(应用于玩家名称,血条,称号)

    using UnityEngine;
    
    public class UI_Follow : MonoBehaviour
    {
        public Camera m_camera;
        public Transform m_target;
        public RectTransform m_ui;
        
        private Vector3 position_sp;
    
        private void Awake()
        {
            if (m_camera == null)
            {
                m_camera = Camera.main;
            }
            if (m_ui == null && transform is RectTransform)
            {
                m_ui = (RectTransform)transform;
            }
        }
    
        private void LateUpdate()
        {
            position_sp = m_camera.WorldToScreenPoint(m_target.position);
            Format_Position(ref position_sp);
            m_ui.localPosition = position_sp;
        }
    
        private void Format_Position(ref Vector3 pos)
        {
            pos.x -= Content.screen_width_half;
            pos.y -= Content.screen_height_half;
            pos.x *= Content.screen_width_ratio;
            pos.y *= Content.screen_height_ratio;
        }
    }
    View Code
    using UnityEngine;
    
    public class Content
    {
        //当前UI分辨率
        public const float UI_Width = 1366f;
        public const float UI_Height = 768f;
    
        //手机屏幕大小的二分之一
        public static float screen_width_half = Screen.width / 2;
        public static float screen_height_half = Screen.height / 2;
    
        //手机屏幕与UI的比率
        public static float screen_width_ratio = UI_Width / Screen.width;
        public static float screen_height_ratio = UI_Height / Screen.height;
    }
    View Code

    需要根据手机分辨率与UI进行适配

    另一种解决方案:

    每个3D物体身上都挂载一个Canvas,通过调整UI角度实现

  • 相关阅读:
    数论 欧几里德算法 以及 欧几里得拓展
    数论 快速幂的原理讲解
    汉诺塔模板
    C++ 迭代器运算
    C++ STL vector set map 简易用法
    C++ 使用指向函数的指针数组
    Codeforces 718C 线段树+矩乘
    BZOJ 2506 分块
    Codeforces 455D 分块+链表
    Codeforces 19E 树上差分
  • 原文地址:https://www.cnblogs.com/Joke-crazy/p/10057312.html
Copyright © 2011-2022 走看看