Unity——在Canvas下的三种渲染模式下的Image拖拽

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.EventSystems;

public class IconDrag : MonoBehaviour, IBeginDragHandler, IDragHandler
{
    Vector3 offset;  //偏移量
    public Canvas canvas;

    private void Update()
    {
        Debug.Log(Input.mousePosition);
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        Vector3 pos = eventData.position;   //鼠标点击的世界坐标位置
        switch (canvas.renderMode)
        {
            case RenderMode.ScreenSpaceOverlay:
                pos = eventData.position;
                break;
            case RenderMode.ScreenSpaceCamera:
                pos = canvas.worldCamera.ScreenToWorldPoint(new Vector3(eventData.position.x, eventData.position.y, transform.position.z));
         

Unity中创建Canvas可以通过以下步骤进行操作。首先,在Unity编辑器中选择“GameObject”菜单,然后选择“UI”子菜单,最后选择“Canvas”。这将在场景中创建一个新的Canvas对象。\[1\] 在Canvas对象下创建UI元素,比如Image或Text,可以通过在Hierarchy面板中右键点击Canvas对象,选择“UI”子菜单,然后选择所需的UI元素类型。这将在Canvas对象下创建一个新的UI元素。\[1\] 如果你想去掉Canvas对象,你可以将所需的UI元素拖拽到场景中,然后将其设置为预制体。这样,你可以在以后复制这个预制体作为UI的模板。\[1\] 需要注意的是,Canvas对象下的UI元素必须有可以渲染的对象,也就是说,至少需要一个Image或其他可渲染的组件。如果你只想要一个空的GameObject作为UI模板,而不需要Image等可渲染的组件,那是不行的。\[2\] 此外,Canvas(Environment)会显示原来Canvas下所有的内容。比如,如果在原Canvas下放置了一个文本,那么在任何一个拥有Canvas(Environment)的预制体中打开,都会显示那个文本。\[3\] #### 引用[.reference_title] - *1* *2* *3* [Unity 创建 Canvas(Environment)](https://blog.csdn.net/qq_38913715/article/details/129858421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值