Unity之手游UI的点击和方向移动

这篇具有很好参考价值的文章主要介绍了Unity之手游UI的点击和方向移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 Button的点击

1.1 新建UI -> Button

unity 手机移动,unity,ui,游戏引擎

1.2  在Button上面右击添加空物体

unity 手机移动,unity,ui,游戏引擎

1.3  创建脚本挂载到空物体上面

unity 手机移动,unity,ui,游戏引擎

 脚本内容添加点击方法,来控制物体的显示隐藏

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.EventSystems;

public class NewMonoBehaviour : MonoBehaviour
{
   public GameObject player;//获取物体
    private bool isActivity = true;
    private void Awake()
    {
        player = GameObject.Find("Player");
    }

    // Start is called before the first frame update
    void Start()
    {
    }

    void Update()
    {
    }

    // 按钮点击事件
    public void OnMyClick()
    {
        isActivity = !isActivity;
        //显示或者隐藏
        player.SetActive(isActivity);
    }
}

1.4 按钮上On Click的位置关联空物体,并选择空物体的脚本方法OnMyClick()

unity 手机移动,unity,ui,游戏引擎

1.5 运行后就可能控制物体显示隐藏了

unity 手机移动,unity,ui,游戏引擎

unity 手机移动,unity,ui,游戏引擎

二 方向键控制移

2.1 添加四个方向按钮

unity 手机移动,unity,ui,游戏引擎

 2.2 添加一个脚本,同时挂载到四个按钮上面

unity 手机移动,unity,ui,游戏引擎

2.3 编写脚本,通过按钮名字判断是点击的哪个按钮,从而判断往哪个方向移动

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.EventSystems;

public class Controll : MonoBehaviour,IPointerDownHandler, IPointerUpHandler
{
    public Rigidbody2D rbody;//获取刚体

    private void Awake()
    {
 
        rbody = GameObject.Find("Player").GetComponent<Rigidbody2D>();
    }

    void Start()
    {
      
    }

    // Update is called once per frame
    void Update()
    {
        if (isMove) {
            move();
        }        
    }

    public bool isMove = false;//是否移动

    public void OnPointerDown(PointerEventData eventData)
    {
        isMove = true;
        getButton(eventData);
   
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        isMove = false;
    }

    //获取点击的哪个按钮,方向
    private void getButton(PointerEventData eventData) {
        GameObject gameObject = eventData.selectedObject;
        Debug.Log(gameObject.name);
        switch (gameObject.name) {
            case "ButtonUp":
                moveX = 0;
                moveY = 1;
                break;
            case "ButtonLeft":
                moveX = -1;
                moveY = 0;
                break;
            case "ButtonBottom":
                moveX = 0;
                moveY = -1;
                break;
            case "ButtonRight":
                moveX = 1;
                moveY = 0;
                break;
            default:
                moveX = 0;
                moveY = 0;
                break;
        }
    }

    /**
     * 移动
     **/
    public float speed = 10f;//移动速度
    private int moveX;//方向 -1左 1右
    private int moveY;//方向 -1上 1下
    public void move() {
       
        Vector2 position = rbody.position;
        position.x += moveX * speed * Time.deltaTime;
        position.y += moveY * speed * Time.deltaTime;
        //transform.position = position;
        rbody.MovePosition(position);
    }
}

2.4 运行可以看到物体可以往上下左右方法移动

unity 手机移动,unity,ui,游戏引擎

2.5 总结:文章来源地址https://www.toymoban.com/news/detail-813088.html

  • 脚本实现抬起按下事件的接口MonoBehaviour,IPointerDownHandler, IPointerUpHandler。
  • 通过GameObject.Find("Player").GetComponent<Rigidbody2D>(),获取物体
  • 添加变量是否移动isMove,在Update方法里面判断是否拦截移动
  • OnPointerDown 按下的时候通过eventData.selectedObject,获取点击的哪个按钮,来判断上下左右方向
  • 添加方向判断判断,按钮按下的时候赋值,int moveX;//方向 -1左 1右     int moveY;//方向 -1上 1下
  • OnPointerUp 按键抬起的时候,ivMove变为false,不再更新移动位置

到了这里,关于Unity之手游UI的点击和方向移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity第三人称如何让人物始终朝向相机方向移动

    不知道如何制作简易第三人称相机的同学可以看我的这篇文章:Unity如何实现第三人称相机跟随 我们在开发第三人称游戏过程中很容易遇到:我们的玩家角色,他面对北方,背后有一台摄像机,正巧也是面对北方。现在,他向右转90度,面对东方。此时如果让他向前走,那么

    2024年02月06日
    浏览(75)
  • Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

    这段代码是一个在游戏开发中常见的示例,用于获取玩家的输入,并将输入值转换为一个三维向量,以表示移动方向。让我们逐步解释这段代码: float horizontalInput = Input.GetAxis(\\\"Horizontal\\\"); :这一行代码获取水平方向上的输入。它调用 Input.GetAxis(\\\"Horizontal\\\") 来获取水平轴的输入

    2024年02月11日
    浏览(42)
  • Unity点击物体后,移动到物体所在位置

    脚本挂在被点击的物体上 脚本挂在角色控制器上 改进:使用Raycast中的LayerMask 创建“cube”层 将想要被检测的物体放入该层 3.1、 3D物体事件监听 在相机上挂Physics Raycaster组件 检查是否有EventSystem 将脚本挂在被点击的物体上 添加组件Event Trigger组件 3.2、 世界UI世界监听

    2024年02月07日
    浏览(52)
  • Unity UI点击事件系统

    在Unity 的UGUI开发过程中,我们经常需要对UI图片进行操作响应各种处理比如:点击,长点击,长按,拖拽等多种功能的实现,这时原本的Button组件就不够用了 我们需要自己实现一个简单的点击事件系统来响应用户的各种操作,下面可以分析一下思路。 首先你需要提前了解点

    2024年01月17日
    浏览(42)
  • Unity防止UI点击穿透

    主要涉及API: EventSystem.current.IsPointerOverGameObject() EventSystem.current.IsPointerOverGameObject(Touch.fingerId) 同时再加上射线检测辅助判断 完整代码: 遇到的问题: 个人测试在手机上 EventSystem.current.IsPointerOverGameObject(Touch.GetTouch(0).fingerId) 始终返回的是false,不知是什么原因,希望有知道的

    2024年02月06日
    浏览(42)
  • Unity实现点击显示不同UI

    在开发过程中经常遇到切换显示不同UI的需求,实现方案有2套: 1.创建两个场景A/B,在A中点击某个button后触发切换事件后加载B场景现在新的场景信息。优点 是逻辑简单,在不同的场景中创建对应的UI即可,缺点是当两个场景中有重复显示的模型时会有资源重复加载,且模型

    2024年02月12日
    浏览(64)
  • [Unity]UI事件(鼠标进入、离开、点击)

    1、首先继承IPointerEnterHandler、IPointerExitHandler等接口 2、实现其方法 如:OnPointerEnter、OnPointerExit 注意:这些只对UI有效,而OnMouseEnter只对加Collider的非UI有效

    2024年03月17日
    浏览(71)
  • unity UI 跟随3D物体移动

     

    2024年02月11日
    浏览(70)
  • unity的ui怎么显示在鼠标点击位置

    第一种方法: 其实很简单,Input.mousePosition本身就是屏幕坐标(二维),不能直接使用是因为,屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight),nn或者说以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height)而屏幕的基准点在屏幕中心(Scre

    2023年04月17日
    浏览(43)
  • Unity UGUI事件输入,点击UI无反应

    之前被一个特别低级的UI点击问题卡了好久,记录一下,避免之后再犯同样的错误。 UI事件输入未接受到的原因无非就几个,一一排查总能找到原因。 1、若是直接使用的unity组件中的按钮,但是点击按钮没有反应。         1)查找是否被其他UI遮挡         2)查找是否接收

    2024年04月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包