ETH官方钱包

前往
大廳
主題

シーン間データ読み取りの問題

當我玩家都王八蛋? | 2023-09-10 00:21:44 | 巴幣 0 | 人氣 85

実際には、セーブ/ロード機能を実裝した後、私を長い間悩ませた問題がありました。しかし、実際には、私自身が混亂していただけで、壁にぶつかっていただけでした。達成したい効果は、最初の畫面でキャラクターを選択してセーブし、セーブした後に前回のセーブデータが読み込まれ、プレイヤーの情報(體力、位置情報、形狀やサイズなど)が読み込まれることです。しかし、これには1つの問題があり、以前はPlayerPrefsという機能を使用してプレイヤーデータを保存し、プレイヤーオブジェクトが生成されるたび(シーンの切り替え時)にこれらのデータを読み込むようにしていましたが、これはセーブデータを読み込む選択肢と衝突します。したがって、セーブ/ロードの読み込み方法とプレイヤーオブジェクトのシーン間移動時の読み込み方法を區別する方法を考える必要がありました。それぞれの読み込み方法は、シーン遷移の方法に応じて異なります。

1. タイトル畫面からロード → シーンおよびキャラクターデータ(JSON)の読み込み
2. シーン1からシーン2へ(プレイヤーの體力などの読み込みで位置情報は読み込まない)

したがって、シーンの切り替え時にオブジェクトがどのようにして、タイトル畫面から來たのか、前のシーンから來たのかを區別する方法を見つけるのに苦労しました。また、シーンの切り替え時にプレイヤーオブジェクトがリセットされるため、インスペクターに配置されたプレイヤーオブジェクトをどのようにしてシーン間で読み込み、制御するかについても悩みました。最終的に、ChatGPTとの議論の末、タイトル畫面から入ったかどうかをチェックするために単純なブール変數を使用することが最善の方法だと気付きました。

具體的には、FromTitleという変數を宣言して、タイトル畫面から入ったかどうかを判定します。プレイヤーがタイトル畫面からファイルを読み込む(ボタンを押す)と、この変數の値をtrueに変更します。その後、各シーンにGMオブジェクトを配置して検出と読み書きを行います。
タイトル畫面から読み込むボタンを押すと、この関數を呼び出し、まず変數の値をtrueに変更し、それをPlayerPrefsで保存してからシーンを切り替えます。注意點として、PlayerPrefsはブール値を直接保存できないため、trueの場合は1(整數)を保存し、falseの場合は0を保存します。後で條件分岐を使用して、これらの値をブール値に変換します。

シーンを切り替えた後、同じスクリプトのStartメソッド內で次のように検出する
fromtitleValueを宣言して、読み取ったFromTitleの整數値を取得し、'fromtitleValueが1であるかどうか'という條件式の真偽をFromTitleに適用することで、整數値をブール値に変換できます

出來た!
1.前のシーンから:
2.タイトル畫面から:
おやすみ

創作回應

更多創作