コガネブログ

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

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

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

関数 説明
MustBeNull 値がnullであることを保証します
MustNotBeNull 値がnullではないことを保証します
MustBeTrue 値がtrueであることを保証します
MustBeFalse 値がfalseであることを保証します
MustBeEqual 値が等しいことを保証します
MustNotBeEqual 値が等しくないことを保証します
MustBeApproximatelyEqual 値がほぼ等しいことを保証します。デフォルトの許容誤差は0.00001f
MustNotBeApproximatelyEqual 値がほぼ等しくないことを保証します。デフォルトの許容誤差は0.00001f
using UnityEngine;
using UnityEngine.Assertions.Must;

public class ExampleClass : MonoBehaviour
{
    private void Awake()
    {
        GameObject  notNullObj  = gameObject;
        GameObject  nullObj     = null;
        int        health      = 0;
        float      speed       = 1.0f;
        bool       canJump     = true;
        bool       isDead      = false;
        
         // 値が正常なのでメッセージを投げない
        nullObj     .MustBeNull();
        notNullObj  .MustNotBeNull();
        canJump     .MustBeTrue();
        isDead      .MustBeFalse();
        health      .MustBeEqual( 0 );
        health      .MustNotBeEqual( 1 );
        speed       .MustBeApproximatelyEqual( 1.01f, 0.01f );
        speed       .MustNotBeApproximatelyEqual( 1.02f, 0.01f );
        
        // 値が不正なのでメッセージを投げる
        nullObj     .MustNotBeNull(); // Assertion failed. Value was Null
        notNullObj  .MustBeNull(); // Assertion failed. Value was not Null
        canJump     .MustBeFalse(); // Assertion failed. Value was True
        isDead      .MustBeTrue(); // Assertion failed. Value was False
        health      .MustBeEqual( 1 ); // Assertion failed. Values are not equal.
        health      .MustNotBeEqual( 0 ); // Assertion failed. Values are equal.
        speed       .MustBeApproximatelyEqual( 1.02f, 0.01f ); // Assertion failed. Values are not equal.
        speed       .MustNotBeApproximatelyEqual( 1.01f, 0.01f ); // Assertion failed. Values are equal.

    }
}

拡張メソッドとして呼び出すことができるため
UnityEngine.Assertions.Assertよりも簡潔に処理を記述できます

参考サイト様

関連記事