[英]Unable to get variables from script in other game object
我試圖生成6個隨機整數,然后將它們分配給6個不同的對象,但是我發現,簡單地在對象內生成整數會導致每個數字都相同,因為它們都在相同的時間加載。 要變通解決此問題,我試圖連續生成6,以便時鍾時序不同並給出不同的數字。 我試圖弄清楚如何訪問這6個變量。
我已經嘗試過使用'GetComponent <>()'和'GameObject.Find(“”)'一起使用多種不同格式,並將生成的腳本存儲在單行為變量中(我認為這可能使我困惑),然后嘗試通過將腳本存儲在其中的變量訪問數字。但是,當我這樣做時,Unity表示腳本中沒有數字變量(在我的情況下為Num1,Num2等)。
這就是我所擁有的,在驗證變量生成有效的前提下,我只會顯示試圖獲取變量的代碼。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class NumberButton : MonoBehaviour
{
public int Num;
public GameObject Game;
void Start()
{
MonoBehaviour Game = GameObject.Find("Game").GetComponent<GameInit>();
print(Game.name);
if (gameObject.name == "Button1")
{
Num = Game.Num1;
}
else if (gameObject.name == "Button2")
{
Num = Game.Num2;
}
//There are 4 more of these, 1 for each button, I realize this is terrible code etiquette.
GetComponent<TextMesh>().text = Num.ToString();
}
}
如果可行,應該根據按鈕的名稱為每個按鈕分配變量,以便Button1從存儲在GamObject“游戲”中的GameInit腳本中獲取Num1。 實際上,沒有從GameInit抓取任何東西,盡管GameInit中的變量不為0,但抓取器對象中的所有Num變量都等於0。
編輯
抱歉,我誤解了您的問題所在。 編譯器告訴您,這些變量在MonoBehaviour對象中不存在,因為MonoBehaviour沒有這些變量。
你需要改變
MonoBehaviour Game = GameObject.Find("Game").GetComponent<GameInit>();
至
GameInit Game = GameObject.Find("Game").GetComponent<GameInit>();
原版的
由於聲望低,我目前無法發表評論,因此我將以其作為答復。
首先,GameInit.Start()中是否發生數字生成? 如果是這樣,則有可能在GameInit.Start()之前調用了Start()按鈕,因此所有變量在訪問時均為默認值0。 為確保不是這種情況,請將數字生成代碼放在GameInit.Awake()中。
另外,為確保MonoBehaviour對象沒有發生軌跡,請嘗試以下操作:
...
if (gameObject.name == "Button1")
{
Num = GameObject.Find("Game").GetComponent<GameInit>().Num1;
}
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.