[Unity 2019.3.5f1]
Я пытаюсь создать экземпляр объекта в вызываемой функции из другого скрипта.
Это работает, когда я создаю экземпляр непосредственно в том же скрипте (я пытался в update()
с использованием Input.GetKeyDown(KeyCode.Insert)
)
Это странно, потому что у меня нет проблем / ошибок на консоли Unity, но я не получаю сообщений Debug.Log
или print
.
Я получил каждые Debug.Log
до тех пор, пока не будет вызвана следующая строка:
var monsterInstance = Instantiate(monster, new Vector3(v.x, 0.3f, v.y), Quaternion.identity);
Вот мой код. (Я удалил ненужные строки)
public class Spawner: MonoBehaviour
{
public Monster customMonster;
public static Spawner instance;
void MakeSpawner()
{
...
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Insert))
{
this.Create("" + Random.Range(1, 100)); // Works from insert key
}
}
private void Awake()
{
MakeSpawner();
}
//Create monster with proper configuration
public bool CreateMonster(string id)
{
var monster = customMonster;
if (monster == null)
{
Debug.Log("the customMonster is NULL!");
return false;
}
Vector3 v;
v.x = 10f;
v.y = 10f;
v.z = 10f;
print(id);
var monsterInstance = Instantiate(monster, new Vector3(v.x, 0.3f, v.y), Quaternion.identity); // failed if called from Manager, works if called from "update"
print("after instantiate"); // never triggered.
monsterInstance.setID(id, true);
monsterInstance.updateID();
return true;
}
}
Мой другой скрипт использует следующее:
public class Manager : MonoBehaviour
{
public static Manager instance;
public GameObject monster;
private Monsters[] monsters;
void MakeManager() {
...
}
private void Awake()
{
MakeManager();
}
public bool CreateNewMonster(string id)
{
print("CreateNewMonsterid =" + id);
bool result = Spawner.instance.CreateMonster(id); //using Singleton pattern to createMonster
print("never triggered");
if (result)
{
print("success spawn. Update list");
return true;
}
else
{
print("unable to create monster");
}
return false;
}
}
Спасибо за ваше время!