Одна из ваших ссылок указывает на префаб, а не на объект сцены.
Сначала вам нужно проверить, какой из них является префабом, и вы можете сделать это, проверив его scene.rootCount == 0
.
Затем вы либо создаете его экземпляр, либо выбираете его на сцене.
Этот код можно применить, если вы планируете его создание:
void Update()
{
if (Input.GetKeyDown("space"))
{
// int ran = Random.Range(0, 2);
Debug.Log("Is obj1 a prefab" + (obj1.gameObject.scene.rootCount == 0));
Debug.Log("Is spawn1 a prefab" + (spawn1.gameObject.scene.rootCount == 0));
// --------------- Check the object --------------- //
Transform yourObject;
if (obj1.gameObject.scene.rootCount == 0) yourObject = Instantiate(obj1);
else yourObject = obj1;
// --------------- Check the spawn --------------- //
Transform spawn;
if (spawn1.gameObject.scene.rootCount == 0) spawn = Instantiate(spawn1);
else spawn = spawn1;
yourObject.position = spawn.position;
Debug.Log("Moved");
}
}
Когда вы нашли, какой из них являетсяпрефаб, вы можете решить ссылаться на него непосредственно со сцены (перетащите объект из иерархии сцены вместо перетаскивания его из окна проекта).
В противном случае вы можете просто создать его экземпляр (возможно, это то, что выпытаемся сделать).