Unity5 メモ
雑記。
Skybox
Skyboxを設定するには、シーンのメインカメラにSkyboxコンポーネントを追加してスカイボックス用のマテリアルを適用(アセットストアにある設定済みマテリアルを利用すると楽)
Skyboxを自作する場合はprojectビュー内で右クリックからcreate>materialでマテリアルを作り、
shaderをskybox/6 sidedにして前後上下左右の6枚の画像を入れて作るテキスト
hierarchyのcreate>UI>Textで作成。posx, posyを0にするとgame画面に見えるようになる
Horizontal OverflowとVertical OverflowをOverflowにすることで、width, heightよりテキストが大きくなっても表示される
best fitにすれば、範囲内で自動算出してくれるフォント
フォントは標準ではArialしかない。
.ttf, .otf, .dfontをunityに読み込ませるとそのまま使える。windows標準のものでも、asset storeにもあるのでも可RectTransform
UIのオブジェクトについている特殊なtrasform。
モバイルはデバイスによって画面サイズが異なるので、width,heightを直接指定するとデバイスによっては非常に小さい文字が表示されてしまう。
それを解決してくれるのがこれで、アンカーをセットすることで表示のズレを最小化してくれる。
特に、画面サイズによって文字サイズを変えたい場合、左上にある AnchorPresetsから右下のstretch, stretchを選択すると、自動で拡縮してくれる。Unityのアクセス指定子
private ... スクリプト内部でのみ使用できる。デフォルト。
public ... エディター側で値をセットしてして使用する。外のスクリプトから変更できる。スクリプトの宣言の場所で初期化しても反映されない。
[SerializeField] private ... 外のスクリプトからは操作されたくないが、エディタ側でも設定・操作したい場合に使う。
標準でprivateなので単に[SerializeField]としてもいい。スクリプト名の変更
基本的にProjectビュー内でリネームすればUnityが内部的に依存関係を更新してくれる。
が、スクリプト内のクラス名だけは手動で変更する必要がある。
たとえば、A.csというスクリプトをB.csにしても、スクリプト内のクラス名の部分は
public class A : Monobehaviour {
のままのようになっているので、ここを
public class B : Monobehaviour {
に変える必要がある。Findよりもメンバ化
GetComponentやFindGameObjectWithTagなどスクリプト側でオブジェクトを探す関数があるが、動作が重い。
スクリプトのメンバ変数として保持させてそこに変更を加えたほうが直感的で動作も軽い。テキストをスクリプトで操作
using UnityEngine.UI;
を追加し、
[SerializeField] Text staminaText;
を宣言して、
staminaText.text = "スタミナ : " + Player.staminaValue;
などとすることでテキストをスクリプトから変更できるアサート
Unity5.1からアサートが追加されていた。
using UnityEngine.Assertions;
とした後、
Assert(condition);
のように使える。canvas
テキストなどUIオブジェクトを追加すると自動的に既存のcanvasに追加されるが、canvasは複数作ることができる。
なお、複数のテキストを1つのgameobjectにまとめる時、
canvas > gameobject > text の順にするとrecttransformのanchorが無効化されるので、
gameobject > canvas > text のようにする必要がある。デフォルト引数がエラーになる場合
monodevelopのtools>optionから、一番下のdebuggerで"Build project in MonoDevelop"のチェックを外すと直る