[英]Cannot convert type `UnityEngine.Transform' to `UnityEngine.GameObject'
[英]'UnityEngine.GameObject[]' does not contain a definition for `Transform' error
我正在制作一個腳本來生成我的播放器運行的路徑,就像一個無盡的跑步者一樣。 我試圖訪問我的“自己的”轉換(玩家的轉換)並將其放入 playertransform 變量中,但出現此錯誤。 繼承人的完整代碼:-
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class tilemanager : MonoBehaviour {
public GameObject[] tileprefabs;
private Transform playertransform;
private float spawnz = 0.0f;
private float tilelength = 16.0f;
private int amountoftilesonscreen = 7;
private List<GameObject> activetiles;
private float safezone = 15.0f;
void Start(){
activetiles = new List<GameObject>();
playertransform = GameObject.FindGameObjectsWithTag("Player").Transform;
for(int i = 0; i < amountoftilesonscreen; i++){
SpawnTile();
}
}
void Update(){
if(playertransform.position.z - safezone > (spawnz - amountoftilesonscreen * tilelength)){
SpawnTile();
DeleteTile();
}
}
void SpawnTile(int prefabIndex = -1){
GameObject go;
go = Instantiate(tileprefabs[0]) as GameObject;
go.transform.SetParent(transform);
go.transform.position = Vector3.forward * spawnz;
spawnz += tilelength;
activetiles.Add(go);
}
void DeleteTile(){
Destroy(activetiles[0]);
activetiles.RemoveAt(0);
}
}
因為 GameObject.FindGameObjectsWithTag 返回一個游戲對象數組。 請改用 GameObject.FindWithTag。
您正在使用FindGameObjectsWithTag()
,它返回gameObject
數組。 將其更改為FindWithTag()
。
正確的代碼是:
playertransform = GameObject.FindWithTag("Player").transform;
如果您的腳本是您要查找的對象上的一個組件,您可以將其稱為transform
:
transform.position;
如果你想把它放在一個變量中,只需使用:
Transform transform_off_object = transform;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.