当对象在运行时实例化时,如何使 Unity UI 对象可拖动?

How to make Unity UI object draggable when the objects are instantiating at runtime?

我正在开发一款管理游戏,其中每个用户在保存文件中都有一些特定的角色。我在面板中实例化这些字符,我希望用户选择其中一张卡片并将其拖动到某个特定点。我能够为场景中已有的对象制作拖动脚本。但是如果对象是在运行时生成的,如何实现同样的事情呢? 我只需要一些想法如何去做。 这是我当前用于拖动 UI 对象的代码。

    public void OnDrag(){
    btn.transform.position = Input.mousePosition;
}
public void EndDrag(){
    if (btn.transform.position.x -500 <50 || btn.transform.position.x -500 > -50) {
        //btn.transform.position = new Vector3 (-10, 10);
        rt.anchoredPosition = new Vector3 (500, 100, 0);
    }
    else{
        rt.anchoredPosition = new Vector3 (-10, -10, 0);
    }
}

在实例化 GameObject obj 时,执行:

obj.addComponent("YourScript");

其中 YourScript 是您编写的脚本,附加到 GameObjects 使其可拖动..

或者,您实例化一个预制件,通过编辑器将脚本附加到预制件。

这是可取的,因为 addComponent() 将在下一版本中弃用。

我还建议在父级中保留一个 List<YourInstantiatedObjectType>