第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編輯器中設(shè)置的枚舉值在腳本中未更改

編輯器中設(shè)置的枚舉值在腳本中未更改

C#
藍山帝景 2021-08-29 17:53:18
我正在開發(fā)一個需要在 UI 菜單中使用大約 30 個按鈕的項目。這些按鈕中的每一個都有一個附加到它的“加載器”腳本,并且整個場景都有一個 GameManager 對象(它在場景中持續(xù)存在)。GameManager 持有一個枚舉,其命名狀態(tài)的數(shù)量等于按鈕的數(shù)量。這個想法是我需要根據(jù)按下的按鈕用特定內(nèi)容填充下一個場景,所以我想為這些按鈕中的每一個分配一個枚舉值,當點擊加載器腳本時,將更改 GameManager 的枚舉以等于按鈕的值。這樣我就可以避免制作 30 多個場景,而是根據(jù)狀態(tài)更改單個場景。當加載下一個場景時,它應(yīng)該確定當前狀態(tài)是什么,并根據(jù)它做一些事情。問題是,即使我能夠手動分配編輯器中每個單獨按鈕的枚舉值,這似乎實際上并沒有做任何事情。這是我的腳本(僅為相關(guān)方法縮寫),以及單擊按鈕時的示例輸出。這是我的游戲管理器:public class GameManager : MonoBehaviour {//Used so MenuContent scene knows what random content to populate with    public enum MenuChosen{     Tabs, Formal, Casual, Headwear, Accessories, Speakers, ComputerParts,     GameConsoles, MobilePhones, Furniture, Lighting, OfficeSupplies, Gadgets, Toys,     Summer, SchoolSupplies, ArtsCrafts, Checking, Savings, PayPal, OtherAccount, Visa,     MasterCard, AirMiles, OtherCards, Food, Retail, Digital, OtherCoupons,     PayTransaction, ScheduledPayments, LoanPayment, MobileRecharge};public MenuChosen chosen;}這是我的 Loader 類。它附在每個按鈕上。在編輯器中,我選擇了四個按鈕,并通過檢查器中的下拉列表為每個按鈕手動將它們的狀態(tài)更改為“正式”、“休閑”、“頭飾”和“配飾”。Loader 類創(chuàng)建對 GameManager 對象的引用,并嘗試將其“選擇的”枚舉變量更改為等于在檢查器窗口中設(shè)置的值(在加載器中稱為“MenuOption”)。public class Loader : MonoBehaviour {public GameManager gm;public GameManager.MenuChosen MenuOption;private void Start(){    gm = GameObject.FindGameObjectWithTag("GameManager").GetComponent<GameManager>();    Debug.Log("Current Loader State: " + MenuOption);}public void LoadMenuContent(){    Debug.Log("Button's State is: " + MenuOption);    gm.chosen = MenuOption;    SceneManager.LoadScene("MenuContent");    Debug.Log("Current state is: " + gm.chosen);}}當我第一次運行游戲時,調(diào)試消息顯示按鈕的枚舉值確實發(fā)生了變化:Current Loader State: AccessoriesCurrent Loader State: HeadwearCurrent Loader State: FormalCurrent Loader State: Casual但是,在 LoadMenuContent() 方法中打印的日志顯示了一些不同的內(nèi)容:Button's State is: TabsCurrent state is: Tabs因此,即使它顯示按鈕的 MenuOption 已正確更改,一旦它到達按下按鈕時調(diào)用的 LoadMenuContent(),狀態(tài)就會以某種方式變回默認狀態(tài)“Tabs”。關(guān)于為什么枚舉可能會改變的任何想法?
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

我發(fā)現(xiàn)我的問題是什么。

由于按鈕數(shù)量眾多,我不得不采取復制和粘貼的方式。

這意味著每個按鈕都是相同的,并且有自己的 Loader 腳本副本作為組件。通過這樣做,我能夠更改檢查器中每個單獨按鈕的枚舉的單獨值。

然而,這也意味著 OnClick() 方法中的每個按鈕都仍然持有對我復制和粘貼的原始按鈕的引用。所以這些按鈕是獨立的,但它們都引用了來自同一個按鈕的同一個腳本,其狀態(tài)從未從默認值改變過。

為了解決這個問題,我必須手動將每個按鈕拖入其自己的 OnClick() 方法中作為對自身的引用,以便他們從自己單獨的 Loader 腳本中正確調(diào)用正確的函數(shù)。


查看完整回答
反對 回復 2021-08-29
  • 1 回答
  • 0 關(guān)注
  • 198 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號