前往
大廳
主題

跨場景資料讀取問題

當我玩家都王八蛋? | 2023-09-07 02:45:10 | 巴幣 4 | 人氣 90

其實讀存檔功能做好之後有一個困擾我很久的問題,但其實只是我自己腦袋轉不過來鬼打牆,我想達到的效果是在開頭畫面選擇角色存檔,選擇完存檔之後會載入到上次儲存的關卡,並讀取玩家的資訊(血量、位置資訊、形狀大小等)。但這樣會有一個問題,就是我先前是用PlayerPref這個功能來保存玩家資料,並且讓玩家物件在生成的時候(切換場景)就去讀取這些資料,這會跟我選擇存檔載入的時候衝突。所以我必須想個辦法把"從讀取存檔畫面讀取"和"從上一個場景到下個場景的讀取"分開來。
同樣都是切換場景根據進入的方式不同讀取的方式也要不同。
1.從標題畫面載入 →讀取場景、角色資料(JSON)
2.場景1→場景2(只讀取玩家血量等不讀取位置)

於是我想半天都想不到要怎麼在切換場景的時候讓物件去分辨我是從標題過來的還是從上一個場景來的,
而且切換場景的時候玩家物件會被重製,所以掛在inspector的玩家物件會被重製,該怎麼跨場景讀取、控制物件讓我苦惱很久。
最後在與chatgpt討論了一陣子後發現直接利用布林變數來檢查是否從標題畫面進入就好了!

具體來說宣告一個變數FromTitle來判斷是否從標題進入,當玩家從標題畫面讀取檔案(按下按鈕)就將值改為true,然後在每個廠景都掛上GM物件去偵測、讀寫。
當我從標題按下讀檔時我調用這個Function,先把值改為true然後用PlayerPref儲存起來再切換場景,這邊說明一下因為PlayerPref沒辦法儲存布林值,所以我讓他true的話存1(int)false的話存0待會再用判別式把值轉回布林。

切換完場景後同一script的start裡這樣去檢測:
我額外宣告一個fromtitleValue去獲取讀出來的FromTitle int值,
再利用"fromtitleValue是否=1"這個判別式的真偽帶入FromTitle這樣就達到把剛才的整數值還原成布林值了!
最後終於完成效果如下
1.從前一個場景讀取:
2.從標題畫面讀取:
晚安!

創作回應

更多創作