土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

Unity Tips(3)

「Tips」と書いてはありますけど、単に土屋が導入時に気になった所をメモしてるだけです

【用語】アトラス

・複数の画像を1つの画像にまとめたもの。
・複数の画像をアトラスにする作業を「アトラス化」とも言う。
・UnityではSprite Packerなどで作成したSpriteを指す。
・atlasはこの場合「図表集」の意味。

spriteについて(1)

Unityマニュアル:スプライト
https://docs.unity3d.com/ja/540/Manual/Sprites.html
・「スプライトツール」の項で、「Sprite Creator」「Sprite Editor」「Sprite Renderer」「Sprite Packer」が紹介されているが、「Sprite Renderer」だけはツールではなくコンポーネントクラス(他の3つはUnity上で操作するエディタツール)。
・英語版のマニュアルの「Sprite Tools(https://docs.unity3d.com/550/Documentation/Manual/Sprites.html)」も同じ構成なので、「スプライト(を操るため)の道具たち」くらいの意味なのかもしれない。
・余談だけどその下の「スプライトのインポートと設定」で連番がおかしくなってる。

プレハブについて

・プレハブをInstantiateで生成すると、"xxxxx(clone)"というGameObjectがヒエラルキービューに表示される。このプレハブはplay modeの間だけシーンに存在するオブジェクトとなり、select/revert/applyのボタンが表示されない。
・このオブジェクトにAddされているコンポーネントの値をInspector上で変更すると、その変更は同じプレファブから生成されたクローン全てにおよび、同時にプレハブの値自体も更新され、保存される。
・編集を避けたい場合は、以下のように編集禁止フラグを立てる。ただし、子要素のGameObjectには伝搬しないので、その場合は手作業で走査する必要がある。

TargeGameObject.hideFlags = HideFlags.NotEditable;

→うーん、チームの誰かが意図せず変更して事故る未来が見えるな……。apply押してない(そもそもボタンが出てない)のに元のプレハブのデータが更新されるっておかしいと思うんだけど、土屋がなにか間違ってるのかなあ……?
参考: http://tsubakit1.hateblo.jp/entry/20140422/1398177224

Unityちゃん同梱のスクリプトをコンパイルすると警告が出る箇所の修正方法

スクリプトが旧形式のAPIを叩いているので、警告が出ている3ファイルを以下のように修正(エラーが出ていても動作には問題ない)。
\Assets\Resources\UnityChan\SplashScreen\Scripts\SplashScreen.cs(1か所)

//修正前
Application.LoadLevel (Application.loadedLevel + 1);
//修正後
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);

\Assets\Resources\UnityChan\Scripts\IdleChanger.cs(2か所)

//修正前
previousState.nameHash != currentState.nameHash
//修正後
previousState.fullPathHash != currentState.fullPathHash

\Assets\Resources\UnityChan\Scripts\UnityChanControlScriptWithRgidBody.cs(4か所)

//修正前
currentBaseState.nameHash
//修正後
currentBaseState.fullPathHash

アセットの登録方法について

・Assetの登録自体は、Assetsフォルダ配下に直接配置すれば自動的に取り込まれるので、手作業でインポートする必要はない
・ただし、画像はTextureコンポーネントとして認識されるので、必要なら主導でspriteコンポーネントに変更する必要がある(エディタ拡張でいけるか?)