細かいTips

個別の記事を書くほどのことでもない細かいTipsをまとめました。

1. Renderer.isVisible

カメラに映っているときはRenderer.isVisibleがtrueを返しますが、影も含まれます。
そのメッシュ自体がカメラに映っていなくても影がカメラの範囲ならtrueです。
また、シーンビューに映っていてもtrueなので注意が必要です。

2. デフォルトで用意されている空のレイヤー

layers

デフォルトでIgnore RaycastWaterなどのレイヤーが用意されていますが、空で入力もできないものがいくつかあります。
公式に書いてあるものは見つかりませんでしたが、フォーラムのページでは今後のための予約のレイヤーと書かれていて、納得しました。

3. 影だけ描画する

Mesh RendererCast ShadowsShadows Onlyにするとメッシュの描画はせず、影だけ描画できます。

Shadows Only

4. エディタ時及び、Developmentビルド時の切り分け

1
2
3
4
5

#if UNITY_EDITOR || DEVELOPMENT_BUILD

#endif

5. コンポーネントの位置替え

layers

コンポーネントの位置を変えるのに、歯車メニューからMove UpMove Downを選ぶと位置を移動できますが、上図でいうRigidbody 2Dと書かれたあたりをドラッグすると自由に移動できます。
(つい最近まで知らなかった……)

6. Git使用時の空フォルダ

空フォルダはgitにコミットされないですが、Unityだと空フォルダに対して.metaファイルが生成されます。
このことがgitで管理し、複数人で作業すると微妙に面倒なことになります。

以下のアセットが空フォルダを一覧できて、消すことができるので便利でした。
https://assetstore.unity.com/packages/tools/utilities/clean-empty-directories-24284

7. 値が割り当てられていないときの警告

メンバをpublicにしたくないので、[SerializeField] 属性つけて定義すると以下の警告が出て煩わしいです。

Field 'xxxx' is never assigned to, and will always have its default value 'yyyyy'

Assets直下にcsc.rspファイルを作り、以下を記述すればこの警告を除外できます。
-nowarn:0649

8. C#のAttribute

一行でも書けます。

1
[SerializeField] float velocity;

カンマ区切りで複数指定可能。

1
2
[RequireComponent(typeof(Rigidbody2D)), RequireComponent(typeof(Timeline))]
public class Something: MonoBehaviour{

9. Visual StudioのRegion

Regionは自動的に閉じられているのですが、他人のコード読んでいるとき閉じられていると見逃すことがあり、個人的にはあまり好きではありません。
以下の拡張で自動的に開くようにしています。

https://marketplace.visualstudio.com/items?itemName=DavidPerfors.RegionExpander&ssr=false

10. C#のテンプレート

Projectビューで右クリックしてCreate > C# Script したときのC#のテンプレートを変更できます。
Assets直下にScriptTemplatesフォルダを作り、中に81-C# Script-NewBehaviourScript.cs.txtを作成します。
以下のように中身は自由に変更し、Unityを一度再起動すれば適用されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace xxxxx {

public class #SCRIPTNAME# : MonoBehaviour {

void Awake() {

}

void Start() {

}

void Update() {

}

}
}

確認バージョン

Unity 2018.4.17f1

Unityカテゴリの記事
Color SpaceがLinearのときUIの透明度が正しくならない
History Inspectorの紹介
History Inspectorの紹介
敵AIとビジュアルスクリプティング
Chronosを使った感想
コンポーネントの順番をスクリプトから並び替える
Smart Inspectorの紹介
Kris' Favorite Assets が便利
キー操作でUIのナビゲーションをループさせる
TextMeshProのSprite Assetを更新する
UnityPhysicsDebugDraw2D が便利
色管理を考える
ビルドスクリプトを書く
AnimatorのCulling Modeでハマった話
Vectrosityを使ってUGUI上で線や円のアニメーションをする
スプレッドシートからjsonデータを読み込む
ビジュアルノベルアセットFungusにコマンドを追加してカスタマイズする
Skinned Mesh Renderer の Boundsについて
シーンごとにビルド結果の容量を出す
シーンビューにクオリティ設定のスライダーを出すエディタ拡張
ビルド結果のFile headersが大きい理由
フリーのビジュアルノベルアセットFungusを使ってRPGのイベントを作る
Move To View を改良する
フリーのビジュアルノベルアセットのFungusが便利
Visual Studio で保存時にフォーマットする
スプレッドシートからデータを読み込む
Easy Save2 で シリアライズされたクラスを保存する
ShaderでSpriteの色相をシフトする
Sprite、Texture の 色相をシフトする
uGUIのButtonをクリック時にハイライトのままになる
uGUIのCanvas Groupを使って透過処理をしたり、操作を制限する
自作のコンフィグ画面に必要なもの
uGUIでトグルなボタンを作る
uGUI で動的にボタンを作る
Easy Save2 を使ってみる
csv読み込んで ローカライズ
LoadLevelAdditive で共通シーンを加算
画面全体に色をかける
Any State でどこからでも遷移できるようにする
iTween のStop ではまる
sprite の multiple で 境界がおかしくなる
2D画面に線を引く Line Renderer
Renderer の Materials を スクリプトから設定する
背景をスクロールさせる