Мне стало интересно, как можно спасти Public GameObject на другом Public
Transform
Я предполагаю, что magTransform
- это то другое преобразование. Чтобы создать экземпляр mag
префаба в месте преобразования magTransform
, просто используйте magTransform.position
и magTransform.rotation
.
Просто изменить
Instantiate(mag, transform.magTransform, transform.rotation);
до
Instantiate(mag, magTransform.position, magTransform.rotation);
И если я хочу создать экземпляр на GUI. Нажмите кнопку
Не используйте API GUI.XXX
или что-либо, что необходимо поместить в функцию OnGUI
. Исключением является то, что вы делаете плагин для редактора. Используйте новую систему пользовательского интерфейса, а затем зарегистрируйтесь в событии кнопки пользовательского интерфейса, чтобы получать уведомления при его нажатии. Вы можете найти простое официальное руководство для системы пользовательского интерфейса на веб-сайте Unity .
При правильной системе пользовательского интерфейса ваш код должен выглядеть примерно так:
public GameObject Gun;
public Transform magTransform;
public GameObject mag;
public Button instantiateButton;
void OnEnable()
{
//Register Button Events
instantiateButton.onClick.AddListener(() => buttonCallBack(instantiateButton));
}
private void buttonCallBack(Button buttonPressed)
{
if (buttonPressed == instantiateButton)
{
//Your code for Instantiate button
Instantiate(mag, magTransform.position, magTransform.rotation);
}
}
void OnDisable()
{
//Un-Register Button Events
instantiateButton.onClick.RemoveAllListeners();
}