- 2022.03.28 Monday
- スポンサーサイト
-
一定期間更新がないため広告を表示しています
- | スポンサードリンク | - | | - | - | pookmark |
- 2016.08.29 Monday
- MEL 時間差計算
-
MEL 時間差計算 他の言語でやりたかった。。。
- | whaison | MEL(Maya Embedded Language) | 22:09 | comments(0) | - | pookmark |
- 2016.08.29 Monday
- Excelファイルを VBA じゃなくて C# と VB.NET で読み込む "正しい" 方法のメモ Excel.EXE いっぱい
-
Excelファイルを VBA じゃなくて C# と VB.NET で読み込む "正しい" 方法のメモ
※そもそも Excel内での計算が使われてる場合多く
VBA以外の別言語でやろうとするとめんどくさいことになることはおいておいた場合,
google スプレッドシート の javascriptも除く ww・・
COMオブジェクト解放(ReleaseComObject)が書かれていない情報は絶対に参考にしてはいけません。
タスクマネージャーが
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
Excel.EXE
っていっぱい Excel.EXE になっちゃうよねって話 - | whaison | VBA | 13:18 | comments(0) | - | pookmark |
- 2016.08.23 Tuesday
- melProfilerWindow MEL プロファイラ(MEL Profiler)
-
MEL プロファイラ(MEL Profiler)
MEL プロファイラ(MEL Profiler)は、ツールの使用状況を監視し、ボトルネックを特定するために必要な測定基準を記録するプロファイリング システムです。また、プロファイリング データを使用して、MEL ツールセットを迅速かつ容易に診断できます。
1開く
Maya で、プラグイン マネージャ(Plug-in Manager)
(ウィンドウ > 設定/プリファレンス > プラグイン マネージャ(Windows > Settings/Preferences > Plug-in Manager))を開き、melProfiler.mll プラグインをロードします。
2、MEL コマンド 「melProfilerWindow」 を、入力実行すると出るけど初回 プロファイリング ボタンが出ない。
Maya 再起動したらでた。mll がロードされないのかな?。
.
.
MEL プロファイラを使用してプロファイリング データを生成するには
- プロファイリング > 開始(Profiling > Start)を選択し、プロファイリング プロセスを開始します。
- 図表化するワークフローを実行します。
実行時に、ワークフローで使用される MEL プロシージャが MEL プロファイラ(MEL Profiler)に表示されます。
- ワークフローが完了したら、プロファイリング > 停止(Profiling > Stop)を選択します。
プロファイリング プロセスが停止します。プロファイリング データに含まれている各プロシージャは、ランタイムの割合(Percent of Runtime)の値に基づいてカラー コーディングされます。
- ランタイムの割合(Percent of Runtime)が 10% を上回る場合は緑色になります。
- ランタイムの割合(Percent of Runtime)が 25% を上回る場合は黄色になります。
- ランタイムの割合(Percent of Runtime)が 50% を上回る場合は赤色になります。
.
..
deleteUnusedCommon_Multi
黄色くなってるので
whatIs deleteUnusedCommon_Multi; melProfiler_profile.csv
// 結果: Mel procedure found in: C:/Program Files/Autodesk/Maya2016/scripts/startup/cleanUpScene.mel //
シーンサイズの最適化が重いみたい。
出力されるプロファイルデータCSV melProfiler_profile.csv
https://gist.github.com/whaison/f8e4daf81d4bc469e9a3ee35e1898a89
出力されるコールグラフ.dot mel_Profiler_call_graf.dot
https://gist.github.com/whaison/a7597c16c4059bf0c598803442059847
みるには。。。
https://ja.wikipedia.org/wiki/DOT言語
.
resこんなん
本体こんなん
.
.
.
.
.
..
.
.
.
.
- | whaison | MEL(Maya Embedded Language) | 15:26 | comments(0) | - | pookmark |
- 2016.08.22 Monday
- Maya progressBar and interrupting a script loop cancel 'ESC' MainWindow And Out of Window progressBar
-
Maya progressBar and interrupting a script loop cancel 'ESC' MainWindow And Out of Window progressBar
---new
UI_3_5_ProgressInterruptingWindowLoopEnd_timeView_bugfix_good_Refactoring.mel
https://gist.github.com/whaison/62cbfda460d679357752a76360f63e5c--old
UI_3_3_ProgressInterruptingWindowLoopEnd_timeView.mel
https://gist.github.com/whaison/cb51d9ccabdbd0c690f8a1b12025f7c2感想
progressWindowは 扱いにくいかな。と
直接
windowとして
progressBarをいじったほうが扱いやすく感じた。
参考URL
Melのループを途中で止めるスクリプト
http://shikatanaku.blogspot.jp/2010/07/mel.html
,
svenneve, Maya progressBar and interrupting a script loop
http://www.svenneve.com/?p=258
,
http://cgjishu.net/blog-entry-134.html
、
http://mayastation.typepad.com/maya-station/2009/04/interrupting-or-aborting-a-mel-script.html
、
ボタンを押すとウィンドウ上にボタンが追加されるmel
http://planetmikan.blog.fc2.com/blog-entry-1.html
、
ゼンリョクノート[Maya] progressWindow を作成する
http://mukaimame.blog111.fc2.com/blog-entry-263.html
,
MayaのMELで何か作る 頂点群と頂点群の配列を合わせる
http://mayamelscript.blogspot.jp/2014/11/blog-post_26.html
Complete Maya Programming: An Extensive Guide to MEL and C++ API
,
https://www.borndigital.co.jp/book/482.html
著者
著者のウェブサイト( http://www.davidgould.com )で提供されます。
C++で書くMayaプラグイン
http://www.dfx.co.jp/dftalk/?p=5421
Ueta CG Tech (blog) 【Maya】Python,C++,C#で比較。スキンウエイトの取得と設定
- | whaison | MEL(Maya Embedded Language) | 20:03 | comments(0) | - | pookmark |
- 2016.08.18 Thursday
- Unity 4.5でのシェーダ shaderの compileコンパイル ページの翻訳のメモ
-
Unity 4.5でのシェーダ shaderの compileコンパイル ページの翻訳のメモ
このリクエスト結果でしかないです。
いくつかの部分で物語。 1)シェーダのコンパイルが今後のユニティ4.5にどのように行われますか。 2)それが開発された方法。最初のものは、おそらくユニティユーザーに興味深いものです。 私たちは仕事とスタッフの開発方法についての好奇心もののための第二の1一方。
要約:ユニティ4.5は、「すごい、多くのシェーダ、はるかに速い」シェーダインポートし、より優れたエラー報告があります。
現在の状態(ユニティ<= 4.3)
あなたはユニティに新しいシェーダファイル(.shader)を作成したり、既存のものを編集するとき、私たちは「シェーダインポーター」を起動します。 ただ、他の変更アセットのように。 そのシェーダ輸入者は、いくつかの構文解析を行い、その後、私たちはサポートするすべてのプラットフォームのバックエンドに全体のシェーダをコンパイルします。
あなたは簡単な作成するときに典型的には、 サーフェスシェーダを 、それが内部的に50かそこら内部シェーダ変異体(古典的な"プリプロセッサ駆動特級シェーダ」アプローチ)に展開されます。 典型的にはそこに7かそこらプラットフォームのバックエンドは、( -より多くのあなたがコンソールのライセンスを持っている場合D3D9、d3d11、openglの、GLES、gles3、d3d11_9x、フラッシュ)にコンパイルします。 これは、数百人のシェーダがコンパイルされているあなたは、シェーダで何かを変更するたびに、意味します。 そして、すべてのことが、あなたはかなり単純なシェーダを持っていると仮定-あなたには、いくつかの中で投げる場合multi_compileディレクティブ 、あなたは何千ものを見ているでしょうか、何千ものシェーダの数十は、コンパイルされています。各。 そして。 すべて。 時間。
それはそれを行うには意味がありますか? あんまり。
「なぜ我々はこれをやっている?」状況のほとんどのように、この1はまた、有機的に進化し、そして「それは一度に良いアイデアのように聞こえた "と"誰かがそれに取り組んでいない限り、それ自体が解決しない」と説明することができます。
昔、Unityは1つまたは2つのシェーダプラットフォームのバックエンド(OpenGLとD3D9)を有していました。 シェーダの量がやっていた人々がはるかに低かった変異体です。 時間では、我々はより多くの両方のバックエンド、および以上の変異体を得ました。 それは、誰かがこの問題を解決する必要があることは非常に明らかになりました。
上記に加えて、シェーダのコンパイルと他の問題は、例えば、そこにありました。
- シェーダでのエラーは、よく、「面白い方法で「報告されました。 かなり混乱しています - 時には行番号が何の意味も持ちませんでした。
- デバッグ発生した表面シェーダコードはかなりのブードゥー教のトリック(関与
#pragma debug
など)。 - シェーダの輸入は、シェーダのこれらの何百ものマルチスレッドコンパイルしようとしたが、いくつかのバックエンドコンパイラ(CG)は、内部グローバルミューテックスを持って、よく並列化しません。
- シェーダ輸入プロセスは、 非常に大きな multi_compileバリアントカウント用のメモリが不足していました。
だから我々はユニティ4.5で作品をインポートする方法シェーダを変更しています。 この記事の残りの部分は、 主に社内wikiページのダンプになります。
ユニティ4.5にインポートシェーダ
- 4.3 / 4.5に比べランタイム/プラットフォームの変更いいえ-すべての変更が唯一のエディタです 。
- 4.3 / 4.5に比較して、シェーダ機能の変更はありません 。
- シェーダのインポートは、 はるかに高速です 。 特に複雑な表面シェーダ(などマーモセットSkyshop)。
- これに4.3、15秒で3分:グラフィックステストプロジェクト内のすべてのシェーダを再インポート。
- シェーダでのエラーは正しい行に報告されています 。シェーダの誤差を含む(.cginc)ファイルが正しくファイル名&行番号で報告されています。
- ファイルが遊びに来含む場合は特に、ほとんどが前に「完全に壊れた」でした。
- d3d11バックエンドで私達はほら、ラインなどのエラー列を報告しました。 アップグレードDLL d3dcompiler中のある時点で、エラーの印刷構文を変更し、我々はそれが間違った構文解析されました。 うまくいけば、それが再び壊れることはありませんので、今のユニットテストを追加しました。
- サーフェスシェーダのデバッグワークフローがはるかに優れています。
- これ以上のナンセンス」は、#pragmaのデバッグを追加していないコンパイルシェーダを開き、アセンブリのトンを削除」。 インスペクタでただ一つのボタンには、「表示は、コードを生成しました」。
- 生成されたサーフェスシェーダコードは、いくつかのコメントや、より良いインデントを持っています。 それは今、実際に読み取り可能なコードです!
- シェーダインスペクタの改善:
- それは長いですと、エラーリストがscrollviewを持っています。 正しいファイル/行を開くために、エラーをダブルクリックすることができます。 コンテキストクリックメニューを経由してエラーテキストをコピーすることができます。 各エラーは明らかにそれがために起こっているプラットフォームを示しています。
- コンパイルされたシェーダを調査することは正気です。 現在アクティブなプラットフォーム用にコンパイル結果を表示するための一つのボタン。 別のボタンは、すべてのプラットフォームで表示します。
- その他のバグ修正
- 表面シェーダで固定multi_compileプリプロセッサディレクティブは、時には非常に予期しない結果を生成します。
- .shaderまたは.cgincファイルにUTF8 BOMマーカーは、エラーを生成しません。
- シェーダファイルは、ASCII以外のフォルダとファイル名にすることができます含まれています。
それがどのように動作するかの概要
- 代わりに、インポート時に可能なすべてのプラットフォームのすべてのシェーダバリアントをコンパイルします:
- 唯一のシェーダ(表面シェーダ生成など)の最小限の処理を行います。
- 実際に必要な場合にのみ、シェーダ変異体をコンパイルします。
- 代わりに、インポート時に100から1000まで内部シェーダのコンパイルの典型的な作業のため、これは通常は一握りをコンパイルしてしまいます。
- プレーヤーのビルド時に、そのターゲットプラットフォーム用のすべてのシェーダバリアントをコンパイル
- ライブラリ/ ShaderCache下キャッシュ同一のシェーダ。
- だから、プレーヤーのビルド時に、唯一の未常にコンパイルされたシェーダがコンパイルされます。 そして常にのみ、それらを必要とするプラットフォームのため。 あなたはフラッシュを使用しない場合(すべてのシェーダは、あなたは決してそれらを必要とする場合であっても、すべてのプラットフォームにコンパイルされている4.3、とは対照的に)、例えば、その後、シェーダのいずれも、フラッシュ用にコンパイルされません。
- シェーダコンパイラ(CgBatch)は「サービスプロセス」として実行されているに、各シェーダのインポートのために呼び出されてから変更します
- コンパイラプロセス&ユニティ間のプロセス間通信。 バージョン管理プラグインの統合のためのと同じインフラストラクチャを使用して。
- プレーヤーのビルド時に、ワイドに行くとシェーダのコンパイルを行うために、すべてのCPUコアを使用します。 古いコンパイラは、内部でマルチスレッドにしようとしたが、一部のプラットフォームに起因するものではない可能性はスレッドセーフではありません。 今、私たちはコアごとに1コンパイラ・プロセスを起動すると、彼らは完全に並列行くことができます。
- シェーダコンパイラプロセスを一度メモリにシェーダ変異体の無数を保持する必要はありませんので、メモリ不足のに役立ちますが、同様にクラッシュ - どのようなことが見ていることは一度に一つの変形です。
それが開発された方法
これは主に一または二人の努力だった、といくつかの「スプリント」で開発されました。 この1のために我々は、詳細な作業計画(Confluenceの「タスクリスト」)のための私達の内部のwikiを使用するが、私たちは持っているだけで、同様Trelloまたは類似のものを使用することができます。 全体的にこれは実際の作業の2ヶ月の周りおそらくだった-しかし、はるかに長い時間の間に広がります。 最初のスプリントは、2013年3月に開始し、第一のアルファビルド(2013年10月)のためだけの時間で4.5コードベースに状態「私たちは、この明日を出荷することができると思います」。に上陸しました マイナーな改良と修正は4.5アルファ&ベータ期間中に行われた。 今anydayを出荷する必要があり、指が交差!
驚くべきことに(または多分ない)、作品の最大の作品は、「どのようにシェーダにエラーを報告しますか?」の周りの領域でした。今シェーダ変異体は、 オンデマンドでのみインポートされるので、それは多少の誤差が唯一の"最初のインポートの後にいくつかの時間」を発見することができることを意味します。 しかし、これは、バイ・デザイン変更です - 明らかに反復時間の条件をでスケールしない」のは、可能なすべてのプラットフォーム用のすべての可能な変形をコンパイルしましょう」の前のアプローチとして。 しかし、この明らかに潜在的な欠点である「シェーダは、それはすべてのエラーが、おっとを持っていなかったように、今ではしているようでした」。 しかたがない; ほとんどすべてと同様に五分五分&欠点があります。
開発の大部分はベータテストグループに構築し、「新しいシェーダー輸入は+ 4.3 "ユニティ4.3ベースのブランチで行われた、と何かが働いていた後、私たちは、カスタムをオフに送信しました。 私たちも、早期のフィードバックを得るために開始された4.5アルファ前にこれをやっていました。 私が今まで持っておそらく、素敵なフィードバック:
私は今、約一週間のビルドを使用していると私は完全に私がシェーダでどのように動作するか、それがどのように変化したかに吹き飛ばされています。
私は道速く物事を試してみることができます。
私はもはや含まれるファイルにタイプミスを作る怖いません。
これら二つは、作業しているとき、私はより多くの周りにプレーすることにまとめます。
このため、私は映画のトーンマッピング[私のモバイルターゲット上]と偽のHDRを行う方法を発見しました。この[シェーダコンパイラ]なしで戻って定期的にベータへ行くの考えは本当に私をおびえさせます。
とにかく、ここで私たちのウィキからのタスクのダンプは、(それらのすべてが完了したら、我々はオフダニたい少しのチェックボックスを持っていた)のです。 いつものように、「それは基本的に動作し、素晴らしいです! "仕事の最初の週(第一スプリント)の後に達成されました。 したことを後に残されたものなど「すべてのTODOのを修正し、すべての退屈な残りの作業を行います」
2013月スプリント:
- CgBatch DLL作ります
- 実行ユニットテスト
- DLLからインポートシェーダ
- あらゆる場所に一時ファイルを使用しないでください
- シェーダの輸入の変更
- 任意のコンパイルを行うだけ生成ソースコードにサーフェスシェーダの一部を変更しません
- 「オープン表面コンパイラの出力」ボタンを作ります
- インポート時に、サーフェスシェーダの生成を行う&結果をキャッシュ(シェーダでシリアライズ、編集者のみ)
- また、すべてのCGINCLUDEブロックを処理し、実際にインポート時の#includeを行い、その結果をキャッシュ(この後、CGPROGRAMブロックと左、ないの#includeステートメントを使用して)
- ShaderLab ::パスは、それが内部にまだコンパイルされていないプログラムを持っているし、適切なCGPROGRAMブロックを見つけることができます知っている必要があります:
- shaderlabに構文を追加し、パスのようなもの{GpuProgramID int型}
- CgBatchにコンパイルをしないでください、ちょうどCGPROGRAMブロックを抽出し、それらにIDを割り当てると、「GpuProgramID xxxの」に置き換えます
- - > CGPROGRAMブロック・テキストスニペットIDのマップ:シェーダエディタ専用データとして「結果をキャッシュします」
- CgBatchは、1シェーダバリアントコンパイルする機能を追加(CGプログラムブロックのソース+プラットフォーム+のキーワードを、バイトコード+エラーアウト)
- CgBatchの実際のシェーダコンパイラから取り扱うすべての#includeを削除
- shaderlabプログラム/サブプログラム/バインディング構文でならないために、単一のシェーダのコンパイルの出力を変更しますが、直接データを生成します。 反射データの文字列、すべての制服/テクスチャを報告するいくつかの仮想インタフェース/ ...などのシェーダコード。
- オンデマンドでシェーダをコンパイルします
- GPUプログラム&彼らのparamsのデータファイルフォーマット
- m_GpuProgramLookup( - > GPUProgramキーワード):ShaderLabパスは、地図を持っています。
- GetMatchingSubProgram:
- 見つかった場合はm_GpuProgramLookupから1を返します。 見つかった場合は、キャッシュから取得
- 見つからない場合は、プログラムのスニペットをコンパイルします
- キャッシュへの書き込み
2013年7月スプリント:
- 引いて、トランクの最後の3ヶ月をマージ
- プレーヤーのビルド・パイプライン
- プレーヤー/バンドルを構築する場合、すべてのシェーダのスニペットをコンパイルし、それらを含めます
- exclude_renderers / include_renderers、シェーダスニペットデータにトリクルダウン
- 「ターゲットなし」(のすべて)プラットフォーム向けにビルドするときに適切にそれを行います
- スニペットは、(必要?ない?)内蔵のリソースファイルに保存されます
- 建物組み込みのリソースファイルを動作させます
- DX11 9.xのシェーダが含まれていません
- 建物エディタのリソースファイルの作業を行います
- プレーヤーを構築しながら、「行方不明の組み合わせ」コンパイルをマルチスレッド。
- スニペットキャッシュ内のスレッドの安全性を確保
- 賢明エラーを報告
- その他
- 各シェーダスニペットは、おそらく必要なキーワード順列を知っている必要があります:CgBatchは、そのスニペット内の直列化(ベクトルのような<ベクトル>)を抽出します
- GLSLPROGRAMスニペットを修正しました。
- 「cgbatchバージョン "とは別の「コンパイラのバージョン」。 スニペットデータ&ハッシュに埋め込むコンパイラのバージョン
- UsePassを修正しました。
2013年8月スプリント:
- 4.3ベースのブランチに移動します
- GFXのテストの失敗
- メトロ、影関連のテストに不合格
- フラッシュ、失敗したカスタムライトマップ機能検査
- エラー報告:後半に発見されたエラーに対処する方法を見つけ出します。 不正な構文、タイプミスなどがある場合; 効果的にシェーダは "壊れた"です。 バックエンドシェーダコンパイラはエラーを報告した場合:
- すべてのプログラムのためのピンク "エラーシェーダ」を返し頂点/ピクセル/ ...のいずれかがエラーを持っていた場合、すなわち、私たちはそれらのすべてのためのピンクのシェーダを使用する必要があります。
- エラーがコンソールにログインします。
- シェーダにエラーを追加しますので、それがエディタに表示されています。 その時にシェーダをシリアル化するため、ライブラリ(GUID>のエラー)の下でいくつかのデータベースにシェーダを追加することはできません。
- シェーダGUIDを持つSQLiteデータベース - >エラーのセット。
- 「エラーが発生したシェーダー」のリストにシェーダを追加します。 ループをレンダリングした後にそれらの上に行くと、彼らはピンクのエラーシェーダを使用するように行われます。 (効果的にこれは、現在の(4.2)の動作を変更することはありません:あなたは構文エラーがある場合は、シェーダはピンクです)。
- その他
- それはシェーダスニペットに引っ張るとシェーダフォールバックを修正しました。
- ビルド時に一部「シェーダによって必要なメッシュコンポーネント」 - それらを把握する必要があります! 問題; でもそれを知っているバリアントをコンパイルする必要があります。
- より良いの#include処理は、今、同じファイルを複数回含み
- (...将来の64ビットMac用)を再度実行可能ファイルにCgBatchを作ります
- すべての通信のためのExternalProcessを適応させます
- ユニットテストが再び機能させます
- CgBatchからすべてJobScheduler /ミューテックスのものを削除します。 代わりに、複数のプロセスを起動
- メモリをリークしているように感じて、確認する必要があります
- シェーダインスペクタ
- 表面だけシェーダのための「オープンサーフェスシェーダ」ボタンを表示
- 今無用である「コンパイルシェーダを開く」、シェーダのasmを表示しません。 何とかそれをやり直す必要があります。
2013年9月スプリント:
- 4.5トランクのために準備してください
- 現在のトランクにマージ
- チームシティーグリーンを作ります
- 土地はトランクに!
- メイク4.3ベースのチームシティーグリーン
- 組み込みリソースを構築し、シェーダコンパイラRPCエラーGL-のみGFXのテストの失敗(CgProps試験)で失敗します
- GLSLPROGRAM前処理壊れ、テストを追加
- ToonyColorsにおけるモバイルGFXテストの失敗
- エラー報告との#include取り扱い
- テストで、一度、すべてのレポートの行番号を修正します。
- 正しい.cgincファイルおよびそれらの正しいライン上のレポートのエラー
- 解決複数のは、&影響プリプロセッサは、この方法が含まれています。スニペットの抽出時間で、処理が含まれておりません! ただ、ハッシュは内容が含まれており、スニペットのハッシュにそれを養います。
- いくつかのコンパイラを混乱イン
- | whaison | Unity3d | 19:09 | comments(0) | - | pookmark |
- 2016.08.18 Thursday
- Unity Shader _Time の値について
-
カラーデバッグした結果
//20秒で白くなる 1秒あたり 0.05インクリメントされてるかんじ
- | whaison | Unity3d | 19:08 | comments(0) | - | pookmark |
- 2016.08.16 Tuesday
- Reflection test 文字列 が含まれる 配列 に 変数に値を代入 メモ
-
Reflection test 文字列 が含まれる 配列 に 変数に値を代入 メモ
- | whaison | Unity3d | 17:52 | comments(0) | - | pookmark |
- 2016.08.16 Tuesday
- ScriptableObject に Int などの 配列 構造体 クラスを List で保存する
-
ScriptableObject に Int などの 配列 構造体 クラスを List で保存する
サンプルコード。 http://kan-kikuchi.hatenablog.com/entry/MonsterDataMaker さんより
こんなのでいいみたい。。[System.SerializableAttribute]を使っている。
多次元のListをInspectorに表示 http://kan-kikuchi.hatenablog.com/entry/ValueListList
例
https://gist.github.com/whaison/f064ae0e0abb4be15af8c49d52c32bc2
ScriptableObject 作って、書き込む 変換 エディター側
https://gist.github.com/whaison/4d9b04bd31d210e5dc3608aaca0ce8ff
- | whaison | Unity3d | 17:34 | comments(0) | - | pookmark |
- 2016.08.14 Sunday
- Maya Python package module ,from ,import ,as, toolset reload
-
C:¥Users¥whaison¥Documents¥maya¥2016¥ja_JP¥scripts¥whaison_tool_001
__init__.py はサブフォルダーにパッケージとして=ネームスペースをほるときにいれとくもの。
なんも書いてなくてもMaya起動時にコンパイルして得られたバイトコード__init__.pycがつくられる。tool_one.py テスト用 関数
from_whaison_tool_001_import_whaison_tool_001.py 呼び出しテスト
- | whaison | MayaPython | 03:20 | comments(0) | - | pookmark |
- 2016.08.12 Friday
- UnityのシリアライゼーションSerializationの日本語コメント
-
ここがわかりやすそうだったが
ここのソースコードがUnityScriptだったが
http://japan.unity3d.com/blog/?p=1630
ここはC#になってたのでまとめておいた。
http://docs.unity3d.com/ja/current/Manual/script-Serialization.html
どの fieldtype をシリアライズできるか。
[Serializable]
属性を持つカスタム非抽象クラス[Serializable]
属性を持つカスタム構造体( Unity4.5 から追加)UnityEngine.Object
から派生したオブジェクトの参照- プリミティブ型(
int
,float
,double
,bool
,string
, etc.) - シリアライズ可能な Unity がサポートしているタイプであること (sbyte、short、int、long、byte、ushort、uint、ulong、float、double、bool、char、string、UnityEngine.Object、Serializable 属性を付加したクラスと構造体、等)
- http://anchan828.github.io/editor-manual/web/serializedobject.html
- シリアライズできる fieldtype の配列
- シリアライズできる fieldtype のList<T>
スクリプトにおいてシリアライズするのに必要なこと。
public
か[SerializeField]
属性を持つstatic
ではないことconst
ではないことreadonly
ではないこと- fieldtype はシリアライズができるタイプである必要があります
//ランタイムで使用するノードクラス class
public class Node
//シリアライズに使用するノード構造体 struct
public struct SerializableNode - | whaison | Unity3d | 17:34 | comments(0) | - | pookmark |