本文主要是介绍[Unity]UI拾取工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、工具需要用OnGUI显示,所以继承了EditorWindow
2、要在游戏中拾取,此时OnGUI会失去焦点,所以鼠标判断在Update函数中
3、UICamera.ScreenPointToRay拾取位置是错误的
4、EventSystem.current.IsPointerOverGameObject只能返回true or false,但是没有明确的拾取对象,EventSystem.current.currentSelectedGameObject返回的是上一次点击的对象。
5、最后方案参考了https://blog.csdn.net/andyhebear/article/details/51433748的重载代码:
PointerEventData eventData = new PointerEventData(UnityEngine.EventSystems.EventSystem.current);
eventData.pressPosition = Input.mousePosition;
eventData.position = Input.mousePosition;
list = new List<RaycastResult>();
pathList = new List<string>();
UnityEngine.EventSystems.EventSystem.current.RaycastAll(eventData, list);
6、取了RaycastResult的gameObject中所有的Image对象,都是实例化后的,取路径是需要用它的sprite,即AssetDatabase.GetAssetPath(img.sprite)
这篇关于[Unity]UI拾取工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!