Unity 拖动UI物体(干货)

本文介绍了在Unity中实现UI物体拖动的详细步骤。通过创建名为MyMove的C#脚本并将其挂载到Canvas上,然后设置一个image作为拖动目标,实现了UI元素的自由拖动功能。
摘要由CSDN通过智能技术生成

Unity 拖动UI物体(超级干货)

首先我们先创建一个C#脚本 名字就叫MyMove
代码如下

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

public class MyMove: MonoBehaviour
{
   

    public  GameObject Canvas;
    GameObject InputObject;
    bool b;//鼠标是否在按下状态
    // Start is called before the first frame update
    void Start()
    {
   

    }

    // Update is called once per frame
    void Update()
    {
   
    	//当鼠标按下时 状态为按下状态 InputObject去获取鼠标点击的UI
        if (Input.GetMouseButtonDown(0))
        {
   
            b = true
您好! 在Unity创建3D物体并在UI拖拽出它可以通过以下步骤实现: 1. 创建一个3D物体,并将其命名为"3DObject"。 2. 在Hierarchy面板选择"3DObject",然后在Inspector面板将"Tag"设置为"Draggable"。 3. 在Hierarchy面板创建一个UI > Button游戏对象,并将其命名为"DraggableButton"。 4. 在Project面板创建一个新的C#脚本,并将其命名为"DraggableObject"。 5. 将"DraggableObject"脚本拖放到"3DObject"游戏对象上。 6. 在"DraggableObject"脚本,添加以下代码: ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class DraggableObject : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public Transform parentToReturnTo = null; public Transform placeholderParent = null; GameObject placeholder = null; public void OnBeginDrag(PointerEventData eventData) { placeholder = new GameObject(); placeholder.transform.SetParent( this.transform.parent ); LayoutElement le = placeholder.AddComponent<LayoutElement>(); le.preferredWidth = this.GetComponent<LayoutElement>().preferredWidth; le.preferredHeight = this.GetComponent<LayoutElement>().preferredHeight; le.flexibleWidth = 0; le.flexibleHeight = 0; placeholder.transform.SetSiblingIndex( this.transform.GetSiblingIndex() ); parentToReturnTo = this.transform.parent; placeholderParent = parentToReturnTo; this.transform.SetParent( this.transform.parent.parent ); GetComponent<CanvasGroup>().blocksRaycasts = false; } public void OnDrag(PointerEventData eventData) { this.transform.position = eventData.position; if(placeholder.transform.parent != placeholderParent) placeholder.transform.SetParent(placeholderParent); int newSiblingIndex = placeholderParent.childCount; for(int i=0; i < placeholderParent.childCount; i++) { if(this.transform.position.x < placeholderParent.GetChild(i).position.x) {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值