コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 5.1 新機能「UnityEngine.Assertions.Assert」

Unity 5.1 で「UnityEngine.Assertions.Assert」が追加されました
このクラスを使用することで値が正常であるかどうかを確認できます
値が不正の場合はメッセージを投げます

関数 説明
IsNull 値がnullであることを保証します
IsNotNull 値がnullではないことを保証します
IsTrue 値がtrueであることを保証します
IsFalse 値がfalseであることを保証します
AreEqual 値が等しいことを保証します
AreNotEqual 値が等しくないことを保証します
AreApproximatelyEqual 値がほぼ等しいことを保証します。デフォルトの許容誤差は0.00001f
AreNotApproximatelyEqual 値がほぼ等しくないことを保証します。デフォルトの許容誤差は0.00001f
using UnityEngine;
using UnityEngine.Assertions;

public class ExampleClass : MonoBehaviour
{
    private void Awake()
    {
        GameObject notNullObj = gameObject;
        GameObject nullObj    = null;

        // 値が正常なのでメッセージを投げない
        Assert.IsNull( nullObj );
        Assert.IsNotNull( notNullObj );
        Assert.IsTrue( true );
        Assert.IsFalse( false );
        Assert.AreEqual( 1, 1 );
        Assert.AreNotEqual( 1, 2 );
        Assert.AreApproximatelyEqual( 1.0f, 1.01f, 0.01f );
        Assert.AreNotApproximatelyEqual( 1.0f, 1.02f, 0.01f );

        // 値が不正なのでメッセージを投げる
        Assert.IsNull( notNullObj ); // Assertion failed. Value was not Null
        Assert.IsNotNull( nullObj ); // Assertion failed. Value was Null
        Assert.IsTrue( false ); // Assertion failed. Value was False
        Assert.IsFalse( true ); // Assertion failed. Value was True
        Assert.AreEqual( 1, 2 ); // Assertion failed. Values are not equal.
        Assert.AreNotEqual( 1, 1 ); // Assertion failed. Values are equal.
        Assert.AreApproximatelyEqual( 1.0f, 1.02f, 0.01f ); // Assertion failed. Values are not equal.
        Assert.AreNotApproximatelyEqual( 1.0f, 1.01f, 0.01f ); // Assertion failed. Values are equal.
    }
}

「UNITY_ASSERTIONS」シンボルが定義されている場合にのみこれらの関数は実行されます

Unityエディタ上もしくはDevelopment Buildの場合に
「UNITY_ASSERTIONS」は自動で定義されるようです

リリースビルドでもアサーションの機能を有効にしたい場合は
ビルド時のオプションで「BuildOptions.ForceEnableAssertions」を指定する模様

参考サイト様