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