unityでcsvを使う ネットワーク越しで

  • このエントリーをはてなブックマークに追加
  • LINEで送る

シーンの構造ができたら、データの構造を作成する。

今回はcsvでデータ管理することにした。データのサーバー管理が必須なので、スマートフォン本体による、preferencesは使用できない。

unityには、ScriptableObject、json、クラスのシリアライズによるデータ永続化がよく使われる。

上記のデータは、最終的にunity内ではlist<T> dictionary、hash、array  などテーブルデータで使用する。

あえてcsv管理にすることにした。

csvにすることで、3つの利点があったからだ。

  • エクセルのオートコンプリートや式を使って、デモデータの作成をすれば多様なデータでも視覚的に楽に生成できる。
  • データベースの登録にcsvを流し込めば、一瞬にしてデータを更新できる。結果、最初から中間の運用管理ミドルウェアの作成をする必要がない
  •   xml系に比べてヘッダー文字等は無いため、すこ~しだけバイト数が減る。(時もある!)

もちろん欠点もある。

  • カンマとか、区切り等のダメ文字が存在する
  • xml系の管理に比べて、正規化に弱い
  • 暗号化時は更に高負荷がかかる。
  • 拡張性が弱い。
  • 文字コードによるトラブルに見舞われる。特にiosのescapeURLが沼

などなど、開発スピードを考えればcsvでの管理はなかなか有利で運用開始後は手間なことが多い。

今回は、検討した結果それでも 僕はCSVを使いたい!でやってみた。文字コード系はutf-8で統一してね。

 

unityでcsvを読み込む① アプリのリソースから読み込む

「utniy csv」で検索したら、

UnityでCSVからデータ読んでいい感じにクラスにつっこむ

を見つけたため、ダウンロードデータに対応するように変更する。

 

リストクラスも同様に変更を加える。set_csvを作成し ローカルの文字列で保持させる。

 

public class userid_data: MasterBase3内で指定した、カラムを持つcsvを流し込めばデータ構造の完成。

具体的な使い方は、
サーバー側で、カンマ区切りの文字列を返すようにページを作成する
もちろん、csvデータをライン読み込みで1行単位で表示してもいいが、今回はphp+sqlite3で表示してみた。別にカンマ区切りならなんでもよい。ruby+ポスグレでも
javascrit+mysqlでも。

csv表示サンプル
login.php?useri_d=xxxx

 

phpでのサーバー動作は、最初にヘッダー部の作成と改行。その後sqliteにたいして、カンマ区切りで文字列取得後、全て表示するというシンプルな設定。

実際にunityで使うには、下記の用になる。

 

 

login画面時 コルーチン呼び出で

 

すれば、 csvを変換し独自リストクラスにまとめてくれる。

データの呼び出しには、

でアクセスできる。

 

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*