unity获取鼠标下有哪些UI物体

unity获取鼠标下有哪些UI物体,第1张

public GraphicRaycaster m_CanvasUI; public EventSystem eventSystem; private void Update()

{ if (InputGetMouseButtonDown(0)) {

CheckSecondUI(InputmousePosition);

}

} /// <summary>

/// 检测是否有第二层UI

/// </summary>

/// <returns></returns>

public void CheckSecondUI(Vector2 pos)

{

List<GameObject> objList = new List<GameObject>();

PointerEventData eventData = new PointerEventData(eventSystem);

eventDatapressPosition = pos;

eventDataposition = pos;

List<RaycastResult> list = new List<RaycastResult>();

CanvasUIRaycast(eventData, list); if (listCount > 0)

{ for (int i = 0; i < listCount; i++)

{

DebugLog(list[i]gameObjectname);

}

} else {

DebugLog("没有UI");

}

}12345678910111213141516171819202122232425262728293031323334

鼠标在屏幕上点击时,会打印出鼠标下所有的UI物体的名称

叉放到叉车下面作为叉车的子物体,代码里控制叉移动或者旋转比如position前面加上local,也就是localposition

这里只是用position作为例子啊,其他的比如rotation同上,position是相对世界坐标的移动,而localposition是相对父物体的坐标移动

不太清楚实际情况,但是,

(1)你这样写的前提是,A 和 B 必须同时实例化到同一个gameObject上(这两个脚本得同时应用到一个物体上),否则你的a = GetComponent<A>()肯定为null ,因为B调用这个Get,而他本身所处的gameObject本没有A这个脚本组件,A的实例在另一个物体上。 估计这是你报错的一个原因。

(2)用static声明全局变量似乎没必要,static的作用应该是让变量在类被实例之前就得到实例化。用static的话,那么应该是要达到这样的目的,即用类名直接调用变量或函数(Mathf类里面的很多数学数值和函数都是这样的例子),你这个情况如果用了static那就最好应该为了这样的目的:

ARoadnodecount

(3)实时 *** 作数组,最好用List<>,具体可以参考msdn List的用法,

(4)如果你的目的只是为了让B能够通过代码访问A的变量,一般的public 变量就足够,其余你只需要解决B通过何种途径正确访问A。比如,你可以把A做成singleton:

static A instance;

以上就是关于unity获取鼠标下有哪些UI物体全部的内容,包括:unity获取鼠标下有哪些UI物体、unity3d实现找到父物体下的子物体、请问下unity如何从一个物体的脚本中获得另一个物体的组件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9524944.html

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

发表评论

登录后才能评论

评论列表(0条)

保存