Создание GameObject в gameobject - PullRequest
0 голосов
/ 29 апреля 2018

Эй, мне интересно, как вы можете создать экземпляр Public GameObject для другого Public Transform?

И если я хочу создать экземпляр на GUI.Button прессе, могу ли я сделать

If(GUI.Button(new Rect(Screen.width / 2, Screen.height / 2 + 100, 100, 25), "Test"))
{
    Instantiate(mag, transform.position, transform.rotation)
}

Вот мой сценарий:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GunScript : MonoBehaviour {

    public GameObject Gun;

    public Transform magTransform;
    public GameObject mag;

    // Use this for initialization
    void Start ()
    {   
    }

    // Update is called once per frame
    void Update ()
    {

        if(Input.GetKeyDown(KeyCode.U))
        {
            Instantiate(mag, transform.magTransform, transform.rotation);
        }
    }

    private void OnGUI()
    {
        GUI.Button(new Rect(Screen.width / 2, Screen.height / 2 + 100, 100, 25), "Test");
    }
}

1 Ответ

0 голосов
/ 29 апреля 2018

Мне стало интересно, как можно спасти 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...