• Unity-3D模型展示


    将3D模型放置到某个位置,然后通过鼠标左键进行旋转的操作

    一种方法是添加另外的相机,采用RenderTexture来渲染该相机的内容

    那么RenderTexture是做什么的呢?

    RenderTexture可以捕获从摄像机、光源和其他对象渲染的图像,并将结果保存到纹理中。

    在使用RenderTexture时,需要将其分配给一个摄像机或光源,并设置相应的属性,例如分辨率、格式、深度缓冲区、清除颜色、裁剪矩形等

    RawImage和Image有什么区别呢?

    Image组件使用Mesh和Material来渲染图像,如果需要在UI中显示简单的图像,例如图标或按钮,则可以使用Image组件

    RawImage组件则使用Unity的UGUI系统内置的UI Raw Image组件来渲染图像,如果需要在UI中显示高级图像效果,例如视频、动态纹理或WebCam输入,则可以使用RawImage组件

    步骤如下:

    一、创建新的相机,创建新的RenderTexture,并把RenderTexture赋值给该相机,如下

    二、创建新的Canvas,用于显示该图像,并在节点下创建RawImage,把RenderTexture赋值给该RawImage

    三、把旋转脚本挂载到该RawImage下,注意里面的target就是你的旋转目标,脚本如下:

    1. using UnityEngine;
    2. using UnityEngine.EventSystems;
    3. ///
    4. /// 引入拖拽接口,实现接口
    5. ///
    6. public class RotateModel : MonoBehaviour,IDragHandler,IBeginDragHandler
    7. {
    8. public bool rotateEnable = true;
    9. public Transform target;
    10. public Vector2 rotateSpeed;
    11. private Vector2 lastMouse;
    12. ///
    13. /// 拖拽过程中
    14. ///
    15. ///
    16. public void OnDrag(PointerEventData eventData)
    17. {
    18. if (!rotateEnable) return;
    19. Vector2 offset = eventData.position - lastMouse;
    20. if(Mathf.Abs(offset.x) > Mathf.Abs(offset.y))
    21. {
    22. target.Rotate(Vector2.down * Time.deltaTime * rotateSpeed.y * offset.x,Space.World);
    23. }
    24. else
    25. {
    26. target.Rotate(Vector2.right * Time.deltaTime * rotateSpeed.x * offset.y,Space.World);
    27. }
    28. lastMouse = eventData.position;
    29. }
    30. ///
    31. /// 开始拖拽
    32. ///
    33. ///
    34. public void OnBeginDrag(PointerEventData eventData)
    35. {
    36. if (!rotateEnable) return;
    37. //target = ModelShowControl.instance.GetModel();
    38. lastMouse = eventData.position;
    39. }
    40. }

    运行游戏,即可进行旋转!

  • 相关阅读:
    图像文件格式与数据存储/传输格式详解
    QT:反射机制
    ABP微服务学习系列-修复System.Text.Json不支持序列化Exception
    【5年保更新】Python爬虫复盘案例,精彩文案多多多多
    Java 数据类型 -- Java 语言的 8 种基本数据类型、字符串与数组
    瑞芯为RK3568开发板搭建NFS服务器
    Java养老护理助浴陪诊小程序APP源码
    个人用C#编写的壁纸管理器 - 开源研究系列文章
    【练习题】一.线性表
    AnythingLLM 的 Docker 使用
  • 原文地址:https://blog.csdn.net/leikang111/article/details/130362347