【Unity入門】Unityを使用する際の注意点

ここまで、Unityの基本的な使い方を解説してきました。いよいよゲーム開発に取り掛かりたいところですが、その前にUnityを使用する際に注意するべき事を見ていきましょう。

この記事は本のように順を追って解説しています。この記事は途中のページになります。
この記事を見ていて、現在の状況がわからない場合や忘れてしまった事などが出てきたら↓のリンクから目次ページへ飛べますので立ち戻って見てください。

<シーン再生中の記録について>

再生中の変更で保存されないもの

さて、まずUnityを使用していて注意しなければいけないのはシーンの再生中に変更したインスペクターの値は保存されない点です。

以前シーン再生中にインスペクターの値をいじる事で値を調整できるよという話をしていました。

しかし、再生中調整した後シーンを停止すると値が再生前に戻ってしまいます

rotate cube

こういった場合は、調整した値をコピーしておいて、再生が停止した時に貼り付ける必要があります。

ちょっとレベルが高くなりますが、プログラムがわかるようになってくるとシーン再生中でも値を保存する事もできます。これに関してはエディタ拡張というものをしないといけないので解説はまた別の機会にしようと思います。

とりあえず、今は再生中のパラメータをいじる際は注意してください

再生中に保存されるものもある

そして、Unityのややこしいところは全てのパラメータが元に戻る訳ではないという点には注意してください。

一例として↓ではTransformとマテリアルのパラメータをいじっています。

move and color change

再生を解除するとTransformのパラメータはリセットされていますが、マテリアルのパラメータは保存されている事がわかると思います。

再生が解除すると位置は元の位置に戻っていますが、色は赤色のままになっています

実は全部が全部リセットされる訳ではないのです。

一見インスペクターでいじれるパラメータがリセットされるように見えますが、プロジェクトウィンドウに保存される系の奴は再生中にパラメータをいじっても保存されます

↓のように実体がプロジェクトに保存されているものが対象になります。(プレハブは元へ変更を適用しないと保存されないので、プレハブはちょっと例外になります)

asset

スクリプトもそうなんじゃないのって感じですが、インスペクターの値はシリアライズ化されてUnity側に保存されているものなので実は扱いが違います。

と、いうか基本的にシリアライズ化されているものは再生中にいじっても停止すると元に戻るといった感じです。

シリアライズが何かわからない方は↓の記事で解説していますので、参考にしてみてください。




<シリアライズ化した変数について>

シリアライズ化すると値が上書きされる

変数をシリアライズ化するとインスペクターで値をいじる事ができますが、実はスクリプトで書いた値は上書きされます。

serialize script

↑のスクリプトではaは1になっています。

inspector serialized valiable

↑インスペクターでは99にしています。

この状態で再生すると

result console serialized variable

このように99と表示されます。

スクリプト上でも値を指定する事ができますが、シリアライズ化するとその値で上書きされるので注意してください。

スクリプトで値を指定する意味

じゃぁ、ややこしくなるので、スクリプトに値を指定しなければいいのでは?と思うかもしれません。ですが、メリットもあるので値を指定するのもアリなんです。

そのメリットとは何かというといちいち値を入力しなくてもいいという点です。

script attach game object

↑ではスクリプトをアタッチした瞬間に「1」の値が入っている事がわかります。本来なら0が入るはずです。

これはスクリプトであらかじめ1を入れているからですね。

パラメータをたくさん増やしていくと、ゲームオブジェクトにアタッチした際にいちいち入力するのがめんどくさくなる時があります。

また、「ちょうどいい値に調節」した後にスクリプトに書いておくと、他でも使う際にいちいち調節しないで済みます。

<セーブについて>

セーブは大事だって事はみなさんよくわかっているかと思います。

Unityを使っているとなんとなくいろんな物が勝手にセーブされててオートセーブなのかと錯覚してしまいそうになる時があるのですが、そんな事はなく、突然Unityが落ちてしまった場合、それまでの作業分が消えてしまいます。

↑で解説したようにシリアライズ化されたパラメータはUnity側がセーブしています。

実は、シーンをセーブした際にもこれらのファイルがセーブされるので、知らない間にセーブされてたりします。

そのため、保存を押してないのに保存されているので何かパラメータをいじったら、いじった瞬間セーブされるものと勘違いしがちなんですが、そんな事はないので

save scene

SaveかSave Projectを押した方がいいです。Unityが落ちたりするとパーになってしまう事もよくあるので、やっぱりセーブは大事です。

ちょっと混乱するかもしれませんが、Saveを押さなくても保存されるファイルもあります。元のファイルそのものを直接触っている場合です。これらはSaveを押さなくても保存されますが、まぁ、小まめにセーブするのに越したことは無いので変に意識せずにセーブしてしまえばいいと思います。

<まとめ>

Point

・シーン再生中にシリアライズ化したパラメータを変更しても保存されないよ!

・スクリプトに書いた値はシリアライズ化すると上書きされるよ!

・シーンを保存すると他のものも保存されるよ!

<わからない事、質問等があれば>

このサイトの説明ではよくわからなかったとか、もっと知りたい事などがあれば

自分の Youtubeの動画にコメントで質問していただければ動画でお答えしようと思います。

文章同士のやり取りだと伝わりづらいし、ラリーに時間がかかりそうなので動画で回答します。

↓の動画が回答の一例になります。どの動画でもいいのでご遠慮なくコメントしてください

できたらチャンネル登録よろしくお願いします!




さて、長々と説明してきましたが、説明ばっかりしていても頭に入ってきづらいと思うので、次回からいよいよゲームを作成していこうかなと思います。手始めに簡単な2Dゲームの作り方を解説していこうと思うので次回もよろしくお願いします。




タイトルとURLをコピーしました