簡體   English   中英

“UnityEngine.GameObject[]”不包含“Transform”錯誤的定義

[英]'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM