Unity3D点击UI图片生成模型预设物

编程入门 行业动态 更新时间:2024-10-21 03:52:47

Unity3D点击UI图片生成<a href=https://www.elefans.com/category/jswz/34/1771358.html style=模型预设物"/>

Unity3D点击UI图片生成模型预设物

                        Unity3D点击UI图片生成模型预设物


目录

1、博客介绍

2、内容

(1)演示

(2)生成

(3)生成物体移动

 3、推送

4、结语


1、博客介绍

翻出来了之前一个两年前Demo,顺手传上来了,通过点击按钮或者其他UI元素生成模型预设物,并且随鼠标移动。


2、内容

(1)演示

(2)生成

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;public class ClickButton : MonoBehaviour {public GameObject Cube;public GameObject Target;private Button _btnCreate;void Start () {_btnCreate = GameObject.Find("Button").GetComponent<Button>();_btnCreate.AddListener(EventTriggerType.PointerDown,OnDownButton);}public void OnDownButton(BaseEventData baseEventData){GameObject cubePre = Instantiate(Cube);if (Camera.main != null){Vector3 targetSpace = Camera.main.WorldToScreenPoint(Target.transform.position);cubePre.transform.position= Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetSpace.z));}}
}

生成脚本,,唯一注意的一点是,鼠标的屏幕坐标转世界坐标的时候,Z值选择场景内的某个物体作为参考值,必须将该物体的坐标转为屏幕坐标,再把转过的Z值组合鼠标点击位置转成世界坐标。

(3)生成物体移动

using UnityEngine;
using System.Collections;public class CubeDragScript : MonoBehaviour {// Use this for initializationvoid Start () {StartCoroutine(OnMouseDown());}IEnumerator OnMouseDown(){if (Camera.main != null){//三维物体世界坐标转屏幕坐标  Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);//完成两个步骤 1.由于鼠标的坐标系是2维,需要转换成3维的世界坐标系  //            2.只有3维坐标情况下才能来计算鼠标位置与物理的距离,offset即是差值//将鼠标屏幕坐标转为世界三维坐标,转换前的屏幕Z值套用Cube转换过得Z值,再算出Cube世界坐标与鼠标世界坐标的差值Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));while (Input.GetMouseButton(0)){Camera.main.GetComponent<MouseOrbit>().enabled = false;//得到现在鼠标的屏幕坐标Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);//物体的位置就是鼠标的世界坐标 + 差值Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;transform.position = curPosition;//这个很重要,循环执行yield return null; }}if (Camera.main != null) Camera.main.GetComponent<MouseOrbit>().enabled = true;}}

注释一条条打的很清楚,直接看代码吧,MouseOrbit脚本是控制镜头旋转,拖动物体的时候禁用,需要源码和演示场景的跳转博主Github.


 3、推送

工程Github:


4、结语

       若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

       QQ交流群:806091680(Chinar)

       该群为CSDN博主Chinar所创,推荐一下!我也在群里!

       本文属于原创文章,转载请著名作者出处并置顶!!!!

更多推荐

Unity3D点击UI图片生成模型预设物

本文发布于:2024-02-12 03:49:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1685754.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模型   图片   Unity3D   UI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!