ザックリ言うと、書いてたコードが冗長すぎて、An expression is too long or complex to compile なるエラーが出たんですよ。
なんですけど、最終的にはテキストファイルを読み込む形で解決出来ました。
えー、これだけだと味気ないので、ブログも冗長に書いていきたいと思います。
今から思えば、非常にセンスのないコードを書いてたんですよ。
学習アプリで任意の単語を返すコードなんですが、こんなのを書いてました。
public string ReturnKorean(int num) {
string str = "";
if (num == 0) {
str = "요일";
} else if (num == 1) {
str = "월요일";
} else if (num == 2) {
str = "화요일";
} else if (num == 3) {
str = "수요일";
}
return str;
}
引数を指定すると、それに対応した文字列を返す、みたいな。
今日までわりとこんなの書いてたんですけど、これがめっちゃ長くなってしまったんですよね。
お恥ずかしながら、1000を超えて1500、、、んで韓国語と日本語のダブルだから3000超えて、、、
まあめっちゃ書いてしまったわけですよ。
そしたらAn expression is too long or complex to compileってエラーが出て動かないんですよね。
Unityでビルド出来なくなってしまいました。
途中から薄々感づいてたんですが、コードが冗長すぎる。
どう考えてもアプローチがおかしいことに気付いたので、どうするのか考えました。
んで、結論はテキストファイルの読み込みですよ。
なんか風の噂では聞いてたんですよね。テキストファイル読み込めるって。
なので、あれこれググってみたら、テクノモンキーさんのブログがヒット。
【Unity】テキストファイルを読み込む方法 - テクノモンキーのアプリ開発日記
このコードを丸パクリさせていただいたら、バッチリでしたよ。
コードの意味は2割くらいしか分かりませんが、元気に動いてくれました。
テキストファイルの文字列を改行で区切って、Listに格納。
あとはこんな感じで、任意の文字列を返せるようになりました。
public string ReturnKorean(int num) {
string str = koreanList[num];
return str;
}
しかしこれあれなんですよね。
元々はテキストファイルに書いてあったんですよ。
テキストファイルに書く→C#にコピペ、なんてことをしてたんですが、このコピペ作業が全て無駄だった。
てかこの無駄を今日まで相当やってきた模様です。
「これ面倒くさくね?」って作業があったら、大体アプローチが間違ってるんですよね。
そういう直感を信じて、ビシバシ手抜きの方法を探さないとダメだなと思いました。
P.S.
今回のことで知ったんですが、Unityって色んな形式のファイルを読み込めるんですね。
テキストアセット - Unity マニュアル
.txt
.html
.htm
.xml
.bytes
.json
.csv
.yaml
.fnt
正直、知ってるのは上2つしかないんですが、jsonとcsvはいずれ使う気がします。
サーバーと接続して、あれこれする際にjsonてやつを使った気がするんですよ。
UnityとMySQLが繋がった - ホーリーのプログラミング日記
PHPで取得したデータをjsonに変換して、それをC#、つまりUnity側に渡してた気がします。
よく知らないんですけど、jsonやつは便利屋なんですよね。だから、いずれどこかで縁があるでしょう。
またcsvなんですけど、これもどこかで縁があるはず。
これこそ、今日までの人生で一度も使ったことないんですよ。
噂は聞いてますよ。隣町の中学にcsvってやつがいて、相当喧嘩が強いらしいみたいな。
しかもなんなら県下最大の暴走族、Excelと仲が良くて、ちょいちょい集会に顔出してることも知ってます。
でも、今日まで縁はなかったんですよ。
「会ったらバチバチにいわしてやんよ」みたいなことを言いながら、本当はビビって逃げ回っておりました。
でもまあ、どこかで会うことにはなるでしょう。
Excelもcsvも未知ですが、どこかで出くわして、バッチバチにやられるはずです。
Unity で CSV ファイルを読み込む方法|こんぶ|note