Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

実行時のために最適なデータ構造を作成しよう

16,192 views

Published on

メガUnityミートアップ2012 ライトニングトーク
「実行時のために最適なデータ構造を作成しよう」

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • There are over 16,000 woodworking plans that comes with step-by-step instructions and detailed photos, Click here to take a look ◆◆◆ http://tinyurl.com/yy9yh8fu
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • The #1 Woodworking Resource With Over 16,000 Plans, Download 50 FREE Plans... ▲▲▲ http://tinyurl.com/y3hc8gpw
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Get access to 16,000 woodworking plans, Download 50 FREE Plans... ♣♣♣ http://tinyurl.com/yy9yh8fu
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • The #1 Woodworking Resource With Over 16,000 Plans, Download 50 FREE Plans...  http://tinyurl.com/yy9yh8fu
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

実行時のために最適なデータ構造を作成しよう

  1. 1. 実行時のために最適なデータ構造を作成しよう泥臭い世界と決別するためのエディタースクリプト活用法
  2. 2. リソースのロードとセットアップの話キャラクターの顔画像 ( 連番 ) ファイルをプログラムで制御して表示したいCSV や XML ファイルに吐いたデータをゲームで利用したい
  3. 3. 普通に考えると実行時に画像ファイルを取得 “/hoge/fuga/chara_%s/face_%d.png” ← キャラ ID と表情 ID を入れ ればいいから簡単じゃない?CSV/XML テキストデータを TextAsset として取得 実行時にパースして読み込み
  4. 4. ちょっとまったー!
  5. 5. それってゲーム内でやりたいですか?テキストのパース=ゴミ出まくりゲーム中のデータ構造が元データに制約される遅いワークフローにも影響ありまくりビルド時に問題を発見出来ない
  6. 6. わがままを成立させたい実行時:ゲームシステムから使いやすいこと、速いこと、シンプルなことが重要ファイル管理:作る時のワークフローが簡単なこと、複雑なルールがないこと、すぐ反映出来ることが重要 どちらも満たすって難しい!
  7. 7. そもそも違う問題なのです「ファイルをどこに置くか、どれを読むか」= アセットパイプラインの問題「ゲームで使うデータ構造 ( クラス構造 ) 」=ゲーム設計の問題 一挙に解決するのが難しいのはこれが理由 しかし!
  8. 8. 一挙に解決する必要などない!
  9. 9. 実行時:理想のデータ構造でどうぞファイル管理:エディタースクリプトで!ファイル管理:エディタースクリプトで!
  10. 10. XmlToCustomAsset( サンプル )https://github.com/unity3d-jp/XmlToCustomAsset
  11. 11. Demo
  12. 12. AssetPostProcessor を使おう!拡張子に関係なく対応!ここからデータを読んで、プログラムから .assets を作ればよい!CSV や XML のパースはエディターで!
  13. 13. OnPostprocessAllAssets static void OnPostprocessAllAssets ( string[]importedAssets, string[] deletedAssets, string[]movedAssets, string[] movedFromAssetPaths) { foreach (string str in importedAssets) {if(str.LastIndexOf(".xml" ) != -1) {Debug.Log("Reimporting:"+str);XMLToCustomAsset.CreateCustomAssetFromXml(str); } }
  14. 14. .assets って何?.assets とは、本当はシリアライズされたインスタンスのコンテナAssetDatabase から作成なんでも保存出来ちゃう!中身も見られる
  15. 15. 実行時のデータ構造t { public Color color; public string messages; public MyCustomAss ロード処理の必要なし!
  16. 16. 実行時の利用法 public MyCustomAsset myData; publicGUIText guiText; // Update is called once perframe void Update () { if(null != myData) { guiText.text = myData.messages; } } 面倒な処理なし、 D&D も可能
  17. 17. .asset からのオブジェクトの読みだしObject objCustom = AssetDatabase.LoadAssetAtPath(save_path,typeof(MyCustomAsset)); AssetDatabase から、アセットのパスと読み出したい型を指定して LoadAssetAtPath を呼ぶことで、そのアセットファイルに保存されている 任意の型のデータを取ってくることが出来ます。
  18. 18. オブジェクトの追加とセーブext(ta); if(null != a) { AssetDatabase.CreateAsset( a, save_pass ic in a.inner) { AssetDatabase.AddObjectToAsset(ic, save_path
  19. 19. リプレースではなく変更しようシーン内のオブジェクトから .asset 内のオブジェクトを参照している時に、 .asset のオブジェクトを削除&再作成すると参照が切れてしまいますすでにあるオブジェクトは、これを取得して編集・保存するようにしますオブジェクトがすでに存在するかは、 AssetDatabase.Contains() を使う事でチェックできます
  20. 20. ScriptableObject を使おう ScriptableObject.CreateInstance<MyCustomAsset> () - .asset に保存するオブジェクトで、 Unity のクラスを継承しな いようなものは、 .asset に保存可能にするために ScriptableObject を継承します。 - ScriptableObject の生成に は、 ScriptableObject.CreateInstance() を使用します。
  21. 21. Happy game development ! :)

×