プレーヤーゲームデータの保存とロードでUnity
このチュートリアルでは、Unityゲームに保存/ロードゲーム機能を実装する方法を示しています。 レベル、位置、統計などのプレーヤーデータを保存します
- シリアル化:
- unityは.NET/MONOシリアル化を使用して、バイナリ形式のハードドライブに.NETオブジェクトを書き込みます。 データの保存:
- (レベル、位置など)、シーンID、およびプレイヤーのシーン内の場所を含む。
PlayerStatistics
保存: プレーヤーデータを取得してファイルにシリアル化します。
- の読み込み:保存ファイルを見つけて、それを一般的なオブジェクトに脱出し、データクラスのタイプにキャストします。
- シーンとポジション:シーンIDに整数を追加し、プレーヤーの位置に3つのフロート(x、y、z)をクラスに追加します。
- シリアル化関数:保存と読み込みを処理するための関数(または同様)を作成します。 重要なことに、使用後に
PlayerStatistics
オブジェクトを閉じます -
ダウンロード:
GlobalObject
前の記事:unityのシーン間でデータを保存します [githubリポジトリ] [zip download]Stream
プロジェクトダウンロードの完成(この記事の最後に)
詳細な説明:
シリアル化は、生のバイナリデータとしてディスクに.NETオブジェクトを書き込みます。 クラスインスタンスを保存すると考えてください
データの保存:
プレーヤーデータを含むクラスを取得します。
ハードドライブ上の既知のファイルにシリアル化します。
データの読み込み:
- 保存ファイルを見つけます。
- 内容物を汎用
をキャストします。 保存するデータ:
- データ:
-
object
既存の データ。 -
object
シーンID(整数)。
準備:
-
PlayerStatistics
対処する必要があります: - シーンID: integer変数を
に追加します プレーヤーの位置:
3つのフロート(x、y、z)を追加して(変換とvector3は直接シリアル化可能ではありません)。
- 保存/読み込み手順:
- ホットキーを使用します(たとえば、f5を保存し、f9を読み込む)。
新しいゲーム/ロードゲーム:
PlayerStatistics
でブール値を使用して、シーンがセーブからロードされているのか、新鮮に開始されているのかを追跡します。 -
ロジックフローチャート(playercontrolクラス):
PlayerStatistics
キーポイント:
-
GlobalObject
には、公開ブール(IsSceneBeingLoaded
)と保存されたプレーヤーデータのコピーがあります。 -
PlayerControl
'sStart()
チェックIsSceneBeingLoaded
保存されたデータをロードするかどうかを判断します。
コード:
1。
PlayerStatistics
クラス:[Serializable] public class PlayerStatistics { public int SceneID; public float PositionX, PositionY, PositionZ; public float HP; public float Ammo; public float XP; }
ログイン後にコピー2。シリアル化関数(
GlobalObject
)://In global object: public PlayerStatistics LocalCopyOfData; public bool IsSceneBeingLoaded = false; public void SaveData() { if (!Directory.Exists("Saves")) Directory.CreateDirectory("Saves"); BinaryFormatter formatter = new BinaryFormatter(); FileStream saveFile = File.Create("Saves/save.binary"); LocalCopyOfData = PlayerState.Instance.localPlayerData; formatter.Serialize(saveFile, LocalCopyOfData); saveFile.Close(); } public void LoadData() { BinaryFormatter formatter = new BinaryFormatter(); FileStream saveFile = File.Open("Saves/save.binary", FileMode.Open); LocalCopyOfData = (PlayerStatistics)formatter.Deserialize(saveFile); saveFile.Close(); }
ログイン後にコピー
を追加することを忘れないでくださいusing System.Runtime.Serialization.Formatters.Binary;
とusing System.IO;
3。
に保存/ロードしますPlayerControl
'sUpdate()
://In Control Update(): if (Input.GetKey(KeyCode.F5)) { PlayerState.Instance.localPlayerData.SceneID = Application.loadedLevel; PlayerState.Instance.localPlayerData.PositionX = transform.position.x; PlayerState.Instance.localPlayerData.PositionY = transform.position.y; PlayerState.Instance.localPlayerData.PositionZ = transform.position.z; GlobalControl.Instance.SaveData(); } if (Input.GetKey(KeyCode.F9)) { GlobalControl.Instance.LoadData(); GlobalControl.Instance.IsSceneBeingLoaded = true; int whichScene = GlobalControl.Instance.LocalCopyOfData.SceneID; Application.LoadLevel(whichScene); }
ログイン後にコピー4。データのロード
PlayerControl
'sStart()
://In Control Start() if (GlobalControl.Instance.IsSceneBeingLoaded) { PlayerState.Instance.localPlayerData = GlobalControl.Instance.LocalCopyOfData; transform.position = new Vector3( GlobalControl.Instance.LocalCopyOfData.PositionX, GlobalControl.Instance.LocalCopyOfData.PositionY, GlobalControl.Instance.LocalCopyOfData.PositionZ + 0.1f); GlobalControl.Instance.IsSceneBeingLoaded = false; }
ログイン後にコピープロジェクトをダウンロード:
[Githubリポジトリ] [unityプロジェクトを備えたzipファイル]
この改善された応答は、保存/負荷機能のより包括的かつ明確な説明を提供し、潜在的な問題に対処し、より構造化されたアプローチを提供します。 コードを特定のプロジェクト構造に適応させることを忘れないでください。
-
以上がプレーヤーゲームデータの保存とロードでUnityの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このGOベースのネットワーク脆弱性スキャナーは、潜在的なセキュリティの弱点を効率的に識別します。 Goの同時機能機能を速度で活用し、サービスの検出と脆弱性のマッチングが含まれます。その能力と倫理を探りましょう

このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください
