unity3d - Unity:拖放脚本不适用于我的预制游戏对象,但适用于常规 UI 游戏对象
问题描述
我有一个简单的脚本,可以在任何普通的 UI 对象(如图像)上正常工作。
但它对我的预制游戏对象根本不起作用,这是为什么呢?我已经附上了一大堆组件来尝试,比如图像、画布渲染器和各种,对我来说没有任何用处。我也只能在运行游戏时看到该死的预制件,我在游戏选项卡上看不到它。我没有任何线索。这太奇怪了。
无论如何,如果我没有说清楚,请让我知道我需要解释或包括什么让任何人给我答案?
public class DragAndDrop : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("onBegindrag");
}
public void OnDrag(PointerEventData eventData)
{
this.transform.position = eventData.position;
Debug.Log("ondrag");
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("onEndDrag");
}
}
这个脚本只适用于 UI 的东西吗?如果是这样,我可以将组件添加到我的预制件中,使其成为 UI 项吗?我在二维工作。
解决方案
默认情况下,这些最初的UI事件仅投射到已启用的 UI 元素( 、 等)上(使用Image
附加Text
到的组件)。Raycast Target
GraphicsRaycaster
Canvas
如果您希望能够在您需要的“普通”3D 对象上使用它们
- 在
EventSystem
您的场景中(已经是这种情况,否则它也不适用于 UI) Collider
对象上的组件- 你的一个
PhysicsRaycaster
组件Camera
!
出于某种原因,我不知道这仅在中提到,IPointerClickHandler (Unity 2019.1 and older)
但 afaik 这仍然适用于所有EventSystem
-related 事件/接口。
推荐阅读
- javascript - 遍历 JS 中的所有 SVG 元素
- java - 如何将 OAEPParameterSpec 添加到 JWE 对象?
- android-studio - Admob Native 高级小添加尺寸
- graphql - 将默认/静态值从服务器传递到客户端
- mysql - 将连接器/NET 与连接池结合使用
- javascript - 获取 Cloud Firestore 数据库集合
- node.js - 为什么 puppeteer page.goto() 会抛出超时错误?
- angular - 格式化显示在 ag-grid 中的值
- php - PHP - 将 session_id 存储在 cookie 中安全吗?
- typescript - TypeScript AMD 模块继承不起作用