【Unity】プロパティを使って情報の値に制約をつける

UnityでのC#のクラスから作成されたインスタンスへのアクセスのついてみていきましょう

基本のコード

public class Character
{
    private int _chracterLevel;

    public int CharacterLevel
    {
        get
        {
            return _chracterLevel;
        }
        set
        {
            _chracterLevel = MathF.Clamp(value, 1, 99);
        }
    }
}

Unityでのサンプル

UnityプロジェクトでこのCharacterクラスを使用するための基本ステップを説明します。このクラスは、キャラクターのレベルを管理するために使用され、レベルが1から99の範囲に制限されるようにします。MathF.Clampメソッドを使って、設定しようとする値が指定された範囲内に収まるようにしています。

  1. 新しいC#スクリプトの作成: Unityエディタで新しいC#スクリプトを作成します。このコンテキストではCharacterLevelManagerという名前を推奨します。
  2. スクリプトの編集: 作成したスクリプトをダブルクリックし、コードエディタで開きます。
  3. コードの追加: 以下のサンプルコードをスクリプトに追加または編集します。Characterクラスを先に定義し、その後でUnityのMonoBehaviourを使用した例を示します。
using System;
using UnityEngine;

[Serializable]
public class Character
{
    [SerializeField]
    private int _characterLevel;

    public int CharacterLevel
    {
        get
        {
            return _characterLevel;
        }
        set
        {
            _characterLevel = Mathf.Clamp(value, 1, 99);
        }
    }
}

public class CharacterLevelManager : MonoBehaviour
{
    [SerializeField]
    private Character character;

    void Start()
    {
        character.CharacterLevel = 0; // Clampをテストする
        Debug.Log("Character Level: " + character.CharacterLevel); // 1が出力されるべき

        character.CharacterLevel = 100; // Clampをテストする
        Debug.Log("Character Level: " + character.CharacterLevel); // 99が出力されるべき
    }
}
  1. Unityエディタに戻る: Unityエディタに戻り、このスクリプトをゲームオブジェクトにアタッチします。
  2. プレイしてテスト: Unityエディタのプレイボタンをクリックしてゲームを開始し、コンソールウィンドウでログが期待通りに表示されるかを確認します。

このサンプルでは、キャラクターのレベルが自動的に1と99の間に制限されることを確認できます。Characterクラスは非常に基本的な形ですが、ゲーム開発におけるデータカプセル化とプロパティの使用方法を示しています。このようなシステムは、ゲーム内のキャラクターやオブジェクトの属性を管理するのに役立ち、より複雑なロジックやゲームメカニクスに拡張する基盤となります。

Unity

Posted by hidepon