Reputation: 35
I have a code used from a tutorial, https://www.youtube.com/watch?v=NtY_R0g8L8E, but I seem to be getting this error:
Assets/LevelGenerator.cs(22,27): error CS0266: Cannot implicitly convert type UnityEngine.Object' to
UnityEngine.Transform'. An explicit conversion exists (are you missing a cast?)
How do I fix this? Thanks
'''
using UnityEngine;
using System.Collections;
public class LevelGenerator : MonoBehaviour {
[SerializeField] private Transform redLevelPart;
[SerializeField] private Transform yellowlevelPart;
void Awake()
{
Transform lastlevelTransform;
lastlevelTransform = SpawnLevelPart(redLevelPart.Find ("EndPosition").position);
lastlevelTransform = SpawnLevelPart(lastlevelTransform.Find ("EndPosition").position);
lastlevelTransform = SpawnLevelPart(lastlevelTransform.Find ("EndPosition").position);
lastlevelTransform = SpawnLevelPart(lastlevelTransform.Find ("EndPosition").position);
lastlevelTransform = SpawnLevelPart(lastlevelTransform.Find ("EndPosition").position);
}
// Update is called once per frame
private Transform SpawnLevelPart(Vector3 spawnpoint)
{
Transform levelTransform = Instantiate(yellowlevelPart, spawnpoint, Quaternion.identity);
return levelTransform;
}
}
'''
Upvotes: 0
Views: 687
Reputation: 945
Your issue is here:
Transform levelTransform = Instantiate(yellowlevelPart, spawnpoint, Quaternion.identity);
The error message is telling you that you're trying to assign an Object type to a variable of the Transform type. That's because the Instantiate() method returns a GameObject (not a Transform) but you're assigning it to levelTransform
which has the Transform type.
You can solve that by referencing the transform component of the GameObject that Instantiate()
returns. For example:
private Transform SpawnLevelPart(Vector3 spawnpoint)
{
GameObject levelObject = Instantiate(yellowlevelPart, spawnpoint, Quaternion.identity);
Transform levelTransform = levelObject.transform;
return levelTransform;
}
Or more tersely:
private Transform SpawnLevelPart(Vector3 spawnpoint)
{
return Instantiate(yellowlevelPart, spawnpoint, Quaternion.identity).transform;
}
Upvotes: 2