unity 怎么识别鼠标点击在ui上

unity 怎么识别鼠标点击在ui上,第1张

比如战斗场景,UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分。为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上。 以前NGUI的时候都是自己来发送射线判断,现在UGUI好了系统提供了更为简便的方法。

#if UNITY_ANDROID && !UNITY_EDITOR

#define ANDROID

#endif

#if UNITY_IPHONE && !UNITY_EDITOR

#define IPHONE

#endif

using UnityEngine;

using UnityEngineUI;

using SystemCollections;

using UnityEngineEventSystems;

public class NewBehaviourScript : MonoBehaviour {

// Use this for initialization

void Start () {

}

void Update()

{

if (InputGetMouseButtonDown(0)||(InputtouchCount >0 && InputGetTouch(0)phase == TouchPhaseBegan))

{

#if IPHONE || ANDROID

if (EventSystemcurrentIsPointerOverGameObject(InputGetTouch(0)fingerId))

#else

if (EventSystemcurrentIsPointerOverGameObject())

#endif

DebugLog("当前触摸在UI上");

else

DebugLog("当前没有触摸在UI上");

}

}

}

var moveSpeed:int=5;//player移动速度

var player:Transform;//定义一个人物的Transform

private var endposition : Vector3;

function Start()

{

endposition = playertransformposition;

}

function Update ()

{

if(InputGetButtonUp("LeftMouse")){ //LeftMouse是在inputManager中设置的,左键值为mouse 0

PlayerMove();

}

var targetposition=playerTransformPoint(Vector3(0,488,-30));

transformposition=targetposition;//相机的目标位置,这两句代码的作用是让人物一直处于相机的视野下

if(endposition != playertransformposition){

playerposition=Vector3MoveTowards(playerposition,endposition,TimedeltaTimemoveSpeed);

}

}

function PlayerMove()

{

var cursorScreenPosition:Vector3=InputmousePosition;//鼠标在屏幕上的位置

var ray:Ray=CameramainScreenPointToRay(cursorScreenPosition);//在鼠标所在的屏幕位置发出一条射线(暂名该射线为x射线)

var hit:RaycastHit;

if(PhysicsRaycast(ray,hit)){

if(hitcollidergameObjecttag=="Terrain"){//设置地形Tag为Terrain

endposition = hitpoint;

}

}

}

你要生成的gameobject是2d的吧?

using SystemCollections;

using SystemCollectionsGeneric;

using UnityEngine;

public class ClickCreateImage : MonoBehaviour

{

  public GameObject imageItem;//要克隆的Imgae

  void Start()

  {

   

  }

  void Update()

  {

      if (InputGetMouseButtonDown(0))

      {

        var go=  Instantiate(imageItem,GetImagePos(),imageItemtransformrotation, imageItemtransformparent);

          goSetActive(true);

      }

  }

  /// <summary>

  /// 坐标转换! 将鼠标按下时的坐标,  根据新生成对象在其父下排列方式进行转换 得到的坐标的位置和鼠标按下时的位置一致

  /// </summary>

  /// <returns></returns>

  Vector3 GetImagePos()

  {

      Vector3 imagePos;

      RectTransformUtilityScreenPointToWorldPointInRectangle(imageItemtransformparent as RectTransform,InputmousePosition ,null, out imagePos);

      return imagePos;

  }

}

首先为这个物体添加一个碰撞器,之后挂一个脚本

bool

istrue=false;

void

onmousedown(){

istrue=true;

}

void

ongui(){

if(istrue){

guitextarea(new

rect(10,

10,

200,

100),

"balabalabala",

200);

}

}

大致上是这么个意思

获取鼠标位置,inputmousePosition

设置鼠标位置的话在Windows平台可以调用系统api SetCursorPos方法实现,但是在unity里面鼠标位置是只读的

以上就是关于unity 怎么识别鼠标点击在ui上全部的内容,包括:unity 怎么识别鼠标点击在ui上、Unity3D 中如何同时获得鼠标点击和键盘按键、unity2D模式如何在点击鼠标的地方生成gameobject等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9584988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存