パスワードを忘れた? アカウント作成
14437733 journal
日記

yumeの日記: Unity制作 メデューサ・ゲーム #13

日記 by yume

●テキストのやつ
一旦終わりとしたが、コメントいただいたカンマ区切りはあかんという話があり、やはりTextFieldParserを使ったcsvの読み込みにしようという感じである。
改めて解説を確認する。しかしUnityでNuGetでなんか追加するにはちょっとした手順が必要らしい。
Unity上でNuGetを検索して追加できるNugetForUnityがあるらしいので、それを導入するか、あるいはたぶんAsset - Plug-insフォルダに必要なdllを追加すればいい、という感じらしい。
この先も何らかのプラグインを追加することはありそうだから、NuGetForUnityをインストールしてみる。
そしてNuGet Microsoft.VisualBasicをインストールするが……。using Microsoft.VisualBasic.FileIO;が使えない。うーむ……。
そもそおNugetとかなんとかの理解からぼんやりしてるんだよな。現状の理解は
・NuGetはいろんなプラグインをインストールできるマネージャー
・NuGetでMicrosoft.VisualBasicとかいろんなプラグインをインストールできる
・プラグインを追加すると、using なんとかかんとかで使える機能が増える
みたいな感じで、じゃあNuGetでインストールしても使えないのってなんなんだ。Unityがいる分制約がある?
ちょくちょく調べると「monoに対応してるやつだけ」とか「.Net 2」そういう記述もある。知らない単語がどんどん増えるよ。
たぶん、Unityは.Netバージョン2で動くから、それより上のバージョンの機能とかは使わない感じ?
だからNuGetでなんでもかんでも追加しても動くというわけではないとかそんな感じかな?

ともかく動かないものは使えない。これにこだわるよりほかの手段を探す。
qiita BobZombie曰く、CsvHelperっていうのが使えるらしい。こっちを試してみよう。
……と思ったがcsvHelperの依存関係のプラグインまで一斉に入ってきて、それを見てUnityが怒り狂いはじめた。これもパス。

次はtakap-tech.comで紹介されたTextFieldParserを移植したバージョンを使ってみる。
これはうまく動くが、行内改行を入れるとエラーがでてしまった。なら行内改行はやっぱり[@]方式でいこうか。
……あれ、だとしたら最初のバージョンの区切り文字をタブにしてしまえば、それでよかったかも。
やっぱりそうしようか。その方が理解できてるし。(なんて遠い回り道…… そのためのLESSON 5)
のちのちCSVをもっとうまく扱う必要がでてきたら再考しよう。

備忘:NuGetパッケージも安易になんでも使えるわけではない。Unityが使う.Netのバージョン的なやつを考慮する必要がある。

--

●ワールド1

で、ワールドというかステージというかそういうものを作る。
ステージの開始時にテキストを読ませることはできたが、ゲームオーバーになるとまた呼び出されてしまう(シーンを直接リセットしているため)
これはいまいちなので、なんとか調整したい。

というわけで、一度やろうと思ってやっぱりやめていた「DontDestroyOnLoad」な仕組みを使う。
・GameManager
        ・UICanvas(ポーズメニュー系)
        ・TextWindow
でGameManagerをDDOLにしておけば、各シーンの偏移でもずっとついてくる。こいつらはすべてのシーンで使うのでこの方が無駄もない(と思う)。
で、シーン開始時に各シーンにそれぞれ配置したStageManagerのStart関数が実行される。Start関数はシーンのロード時に実行される(=シーンのリスタートでも実行される)
StageManagerは最初に、GameManagerのprevStageNumber変数をチェックする(初期値-1)。
prevStageNumberがStageManagerの持つstageNumber変数と同じでないなら、テキスト読み上げを実行し、prevStageNumberにstageNumberをコピーする。
これで、リスタート時はprevStageNumberとstageNumberが同じになるので、テキスト読み上げは二度目以降は実行されなくなる。
他にも色々調整して結構手間取ったけど、まぁなんとかうまくいった。ちょっと全体的に複雑になりすぎてるような予感がするけど……。プログラム筋が足りてないとかそんな感じがする。

結果は、だいたいこんな感じ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

読み込み中...