the*_*lon 0 c# unity-game-engine unity5
我正在制作一个spawner脚本,但有一个问题,我无法找到解决方案......
我得到一个错误说
"无法将类型'UnityEngine.Vector3'隐式转换为'UnityEngine.Transform'"
我可以通过添加.position来删除错误,spawningpos但这不起作用,因为它不是对象的转换只是脚本中的转换变量
public GameObject[] spawningObj;
public GameObject[] insects;
public GameObject[] invierment;
public GameObject[] inviermentSingel;
public Transform player;
public int maxNPCsPerChunk;
public int maxInectsPerChunk;
public int maxInviermentalsPerChunk;
public int spawningAria;
private Transform spawningpos;
// Use this for initialization
void Start()
{
if (player == null)
player = GameObject.FindWithTag("Player").transform;
int max = Random.Range(0, maxInectsPerChunk);
for (int i = 0; i < max; i++)
{
spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z);
//Error on above line
Instantiate(insects[Random.Range(0, insects.Length)], spawningpos);
}
Run Code Online (Sandbox Code Playgroud)
您收到的错误很好地解释了您的问题,让我们来看看
"无法将类型'UnityEngine.Vector3'隐式转换为'UnityEngine.Transform'"
那你在哪里尝试将一个Transform值设置为Vector3?
private Transform spawningpos;
Run Code Online (Sandbox Code Playgroud)
spawningpos 是一个变形
spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z);
Run Code Online (Sandbox Code Playgroud)
但在这里你明确地将其价值设定为a Vector3
Instantiate(insects[Random.Range(0, insects.Length)], spawningpos);
Run Code Online (Sandbox Code Playgroud)
然后在这一行上实例化对象 - 使用Transformas输入.正如您将在此处找到的,您正在使用该方法的重载实际上是要求父进程的 Transform,而是尝试使用它
private Vector3 spawningpos;
Run Code Online (Sandbox Code Playgroud)
其次是,和以前一样
spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z);
Run Code Online (Sandbox Code Playgroud)
最后
Instantiate(insects[Random.Range(0, insects.Length)], spawningpos, Quaternion.identity);
Run Code Online (Sandbox Code Playgroud)
此代码将调用方法的正确重载Instantiate,设置对象的循环在传递时是必需的Vector3