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
叉放到叉车下面作为叉车的子物体,代码里控制叉移动或者旋转比如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如何从一个物体的脚本中获得另一个物体的组件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)