• チュートリアル
  • 機能解説
  • リファレンス
  • 初代Altseedはコチラ

    • 機能解説
    • エンジン
    • ノード
    • 画像
    • 文字
    • マテリアル
    • カメラ
    • ポストエフェクト
    • サウンド
    • ログ
    • プロファイラ
    • ファイル
    • ファイルパッケージ
    • ジョイスティック
    • キーボード
    • マウス
    • カーソル
    • シリアライズ
    • 衝突判定
    • 図形ノード
    • トランジション
    • メディアプレイヤー
    • Altseed2.Tools (.NETツール)

    シリアライズ

    Altseed2では一部を除き,殆どのクラス・構造体がバイナリシリアライズに対応しています。

    Warning

    XMLシリアライズやJsonシリアライズには対応していません。

    Important

    Altseed2のバージョンが変わってシリアライズ内容やフィールド情報が変わった場合,デシリアライズに失敗する可能性があります。
    Altseed2のバージョンを差し替えるときはご注意ください。

    シリアライズ非対応のクラス

    以下のクラスはシリアライズに対応していません。
    これらはEngineクラスにてシングルトンとしてインスタンスが提供されているクラスです。

    • BuiltinShader
    • CommandList
    • Easing
    • File
    • Glyph
    • Graphics
    • JoyStick
    • JoyStickInfo
    • KeyBoard
    • Log
    • Mouse
    • SoundMixer
    • Tool

    使い道

    • Altseed2を用いたアプリケーションを制作する際にデータの保存や読み込み
    • UIのノードを予め作っておいて読み込む

    等があります。

    サンプル(シリアライズの手順)

    シリアライズには System.Runtime.Serialization.Formatters.Binary.BinaryFormatter を使用します。
    以下に,StaticFileのシリアライズを例にシリアライズ/デシリアライズの手順を示します。

    using System;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Text;
    
    using Altseed2;
    
    namespace Sample
    {
        class Serialization
        {
            [STAThread]
            static void Main(string[] args)
            {
                // Altseed2 を初期化します。
                if (!Engine.Initialize("Serialization", 640, 480)) return;
    
                // シリアライズ結果を保存するファイルのパス
                var path = "SerializeSample.bin";
    
                // StaticFileを生成。
                var file1 = StaticFile.Create(@"TestData/IO/test.txt");
    
                // fileをシリアライズします。
                Serialize(path, file1);
    
                // シリアライズされたfileをデシリアライズします。
                var file2 = (StaticFile)DeSerialize(path);
    
                // バイト配列をUTF8として、string型に変換します。
                var text1 = Encoding.UTF8.GetString(file1.Buffer);
                var text2 = Encoding.UTF8.GetString(file2.Buffer);
    
                // テキストをコンソールに出力します。
                Console.WriteLine("text1 : {0}", text1);
                Console.WriteLine("text2 : {0}", text2);
    
                // Altseed の終了処理をします。
                Engine.Terminate();
            }
    
            // シリアライズを行うメソッド
            static void Serialize(string path, object value)
            {
                // バイナリシリアライズに使用するフォーマッターを生成。
                var formatter = new BinaryFormatter();
    
                // シリアライズに使用するストリームを生成。
                using var stream = new FileStream(path, FileMode.Create);
    
                // valueをシリアライズする。
                formatter.Serialize(stream, value);
            }
    
            // デシリアライズを行うメソッド
            static object DeSerialize(string path)
            {
                // バイナリデシリアライズに使用するフォーマッターを生成。
                var formatter = new BinaryFormatter();
    
                // デシリアライズに使用するストリームを生成。
                using var stream = new FileStream(path, FileMode.Open);
    
                // デシリアライズを実行
                var result = formatter.Deserialize(stream);
    
                // デシリアライズの結果を返す。
                return result;
            }
        }
    }
    

    結果は以下のようになります。

    text1 : Test
    text2 : Test
    
    Copyright © 2020 Altseed .