UGUI系列-点击图片生成物体(Unity3D)

简介: 今天给大家分享一个如何点击图片生成物体的脚本,可以把这个脚本稍微封装一下,以后也可以方便使用。 主要试用与点击图片时候响应事件,具体用法还要大家多多摸索

一、前言

今天给大家分享一个如何点击图片生成物体的脚本,可以把这个脚本稍微封装一下,以后也可以方便使用。 主要试用与点击图片时候响应事件,具体用法还要大家多多摸索


二、效果

网络异常,图片无法展示
|


三、正文

步骤:


1.新建2个Image

网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|

就改下名字,其他属性都不用改


2.创建两个预制体在Resources文件夹

网络异常,图片无法展示
|

名字就没有改(懒..)


3.新建脚本test01.cs

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class test01 : MonoBehaviour
{
    //图片名字
    string imageName;
    //预制体对象
    GameObject part;
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //如果获取到对象的话
            if (OnePointColliderObject() != null)
            {
                //给图片名字赋值
                imageName = OnePointColliderObject().name;
                //创建对象
                InstantObject();
            }
        }
    }
    /// <summary>
    /// 点击对象
    /// </summary>
    /// <returns>点击对象获取到对象的名字</returns>
    public GameObject OnePointColliderObject()
    {
        //存有鼠标或者触摸数据的对象
        PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
        //当前指针位置
        eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
        //射线命中之后的反馈数据
        List<RaycastResult> results = new List<RaycastResult>();
        //投射一条光线并返回所有碰撞
        EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
        //返回点击到的物体
        if (results.Count > 0)
            return results[0].gameObject;
        else
            return null;
    }
    public void InstantObject()
    {
        switch (imageName)
        {
            case "Image_1":
                GameObject obj01 = (GameObject)Resources.Load("Cube");
                part = Instantiate(obj01, Vector3.zero, obj01.transform.rotation);
                break;
            case "Image_2":
                GameObject obj02 = (GameObject)Resources.Load("Sphere");
                part = Instantiate(obj02, Vector3.up, obj02.transform.rotation);
                break;
            default:
                break;
        }
    }
}
复制代码

代码比较简单,就不多说了,都有注释。 主要讲一下OnePointColliderObject这个函数中的

  • EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
  • RaycastAll的主要特性就是使用光线投射碰撞:在还没有发生真正的物理碰撞之前,就响应碰撞。
  • public void RaycastAll(PointerEventData eventData, List raycastResults);

OK,大家可以试一下,有什么新奇的点子也可以留言哦


相关文章
点击物体就变颜色,我也有了神笔了(Unity3D)
OnMouseOver(),OnMouseDown(),OnMouseUp(),这三个函数只对3D物体触发事件
|
图形学
|
10天前
|
图形学
Unity 获取鼠标位置下的UGUI或3D物体
本文总结了两种检测方法,分别用于UGUI和3D物体的检测。第一种方法`GetOverUIobj`专门用于检测鼠标悬停的UGUI元素,通过`GraphicRaycaster`实现。第二种方法`GetOverWordGameObject`则同时适用于UI和3D物体检测,利用`PhysicsRaycaster`进行射线检测。两者均返回悬停对象或null。
|
11天前
|
图形学
Unity UGUI实现鼠标拖动图片
在 Unity UGUI 中实现鼠标拖动图片功能,主要涉及事件检测、坐标转换和物体位置更新。根据鼠标移动量更新图片位置。代码示例展示了如何通过这些步骤实现拖动效果。
|
图形学
Unity物体移动到点击位置
Camera 在正交模式下可以实现点击哪里就将物体移动到哪里。 public Vector3 tempPos; void Update() { if (Input.GetMouseButtonDown(0)) { tempPos = Input.mousePosition; tempPos = Camera.main.ScreenToWorldPoint(tempPos); tempPos.z = 0; transform.position = tempPos; } } Camera 在透视模式下可以实现点击哪里就将物体移动到哪里。
2105 0
|
索引
Unity3dUGUI图片循环轮播效果
测试.gif 参数 using UnityEngine.UI; using UnityEngine.EventSystems; using System; using UnityEngine; /// /// 图片轮播组件 ...
4086 0
|
6月前
|
图形学
小功能⭐️解决Unity无法对一个物体上的所有材质球进行更改
小功能⭐️解决Unity无法对一个物体上的所有材质球进行更改
|
vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity通过 射线 获取 鼠标的世界坐标 和 鼠标点击的物体信息
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
【Unity3D 灵巧小知识点】☀️ | Unity通过 射线 获取 鼠标的世界坐标 和 鼠标点击的物体信息
|
10天前
|
前端开发 图形学
unity UGUI跟随3D物体的坐标转换
在 Unity 中实现 UGUI 元素跟随 3D 物体,关键是将 3D 物体的世界坐标转换为屏幕或画布坐标。通过 Camera.WorldToScreenPoint 方法,可将 3D 物体位置映射到屏幕上,再更新 UGUI 元素的位置。代码示例展示了如何使用该方法,使 UGUI 图像跟随 3D 模型,并提供文字显示、图像和线条的显示/隐藏功能。
|
C# 定位技术 API
WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现
原文: WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现         去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用。
1689 0

热门文章

最新文章