unity仿真实例

3d模式UI界面


image.png

答:


image.png

UI?TestMeshPro?面向摄像机


image.png

答:
方案一:每个小Canvas


image.png

方案二:sprite +button +TextMeshPro
image.png
using UnityEngine;
using System.Collections;
using UnityEngine.Events;

/// <summary>
/// 主要是按钮:
///     a. 默认的点击效果
///     b. 切换点击的图片
/// </summary>
public class ButtonSprite : MonoBehaviour
{

    public enum BTN_TYPE
    {
        DEFAULT,
        NORMAL,
    };

    public string name = "ButtonSprite";
    public BTN_TYPE btnType = BTN_TYPE.DEFAULT;

    private Sprite defauleSprite;
    public Sprite clickedSprite;

    private SpriteRenderer render;

    public UnityEvent OnClick;

    void Start()
    {
        render = GetComponent<SpriteRenderer>();
        defauleSprite = render.sprite;
    }

    void OnMouseDown()
    {
        if (btnType == BTN_TYPE.DEFAULT)
        {
            render.color = Color.gray;
        }
        else if (btnType == BTN_TYPE.NORMAL)
        {
            render.sprite = clickedSprite;
        }
    }

    void OnMouseUp()
    {
        if (btnType == BTN_TYPE.DEFAULT)
        {
            render.color = Color.white;
        }
        else if (btnType == BTN_TYPE.NORMAL)
        {
            render.sprite = defauleSprite;
        }
        Debug.Log("btn clicked!!!");

        if(OnClick!=null)
        {
            OnClick.Invoke();
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FaceToCamera : MonoBehaviour
{

    void Update()
    {
        transform.rotation = Camera.main.transform.rotation;
    }
}

鼠标控制模型旋转


image.png

答:


using UnityEngine;

public class ModelSwitch : MonoBehaviour
{
    private float lastPosX;
    private float lastPosY;
    public Transform CameraX;
    public Transform CameraY;
    private float RotaSpeed;
    public float Speed = 100;
    private float range = 2;

    void Update()
    {
        RotaSpeed = -Speed * Time.deltaTime;

        if (Input.GetMouseButton(1))
        {
            if (Input.mousePosition.x > lastPosX + range)
            {
                CameraX.Rotate(Vector3.up, RotaSpeed,Space.World);
                lastPosX = Input.mousePosition.x;

            }
            else if (Input.mousePosition.x < lastPosX - range)
            {
                CameraX.Rotate(Vector3.up, -RotaSpeed, Space.World);
                lastPosX = Input.mousePosition.x;
            }

            if (Input.mousePosition.y > lastPosY + range)
            {
                CameraY.Rotate(Vector3.right, -RotaSpeed, Space.World);
                lastPosY = Input.mousePosition.y;

            }
            else if (Input.mousePosition.y < lastPosY - range)
            {
                CameraY.Rotate(Vector3.right, RotaSpeed, Space.World);
                lastPosY = Input.mousePosition.y;
            }
        }
    }
}

3D按钮跳到新位置,按钮朝向相机


image.png

点击触发动画


image.png

外发光特效


image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Unity简介 1. Unity界面 Shift + Space : 放大界面 Scene界面按钮渲染模式2D...
    MYves阅读 8,485评论 0 22
  • C#问题 1.在类的构造函数前加上static会报什么错?为什么? 答:在构造函数如果有public修饰的静态构造...
    元宇宙协会阅读 9,104评论 4 17
  • 最先执行的方法是: 1、(激活时的初始化代码)Awake,2、Start、3、Update【FixUpdate、L...
    困卡阅读 4,368评论 0 8
  • 更新:【面试题含答案】http://bbs.9ria.com/thread-288394-1-1.html 高频问...
    好怕怕阅读 4,834评论 3 52
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,758评论 0 5