Как сделать объект Unity 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);
}
}
1 ответ
Когда вы создаете объект GameObject, выполните:
obj.addComponent("YourScript");
где YourScript - это сценарий, который вы написали и который прикреплен к GameObjects, делает его перетаскиваемым.
В качестве альтернативы, вы создаете экземпляр префаба, прикрепляете скрипт к префабу через редактор.
Это предпочтительнее, потому что addComponent() устареет в следующих версиях.
Я также рекомендую сохранить List<YourInstantiatedObjectType>
в родительском.