# 参照する型の制約

AnyParameterReferenceやComponentParameterReferenceなどは属性を指定することで、参照する型を制約することができます。

## スクリプト例

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

    [AddComponentMenu("")]
    public class TestConstraintReferenceBehaviour : StateBehaviour
    {
    	[ClassExtends(typeof(AudioSource))]
    	public ComponentParameterReference audioSource = new ComponentParameterReference();

    	[ClassExtends(typeof(AudioClip))]
    	public AssetObjectParameterReference audioClip = new AssetObjectParameterReference();

    	// Use this for enter state
    	public override void OnStateBegin()
    	{
    		AudioSource source = audioSource.value as AudioSource;

    		if (source != null)
    		{
    			source.clip = audioClip.value as AudioClip;
    		}
    	}
    }

スクリプトを追加した例

ParameterContainer例

## 使用できる属性の例

対象の型 | 属性
--- | ---
ComponentParameterReference | ClassTypeConstraintAttributeから派生したクラス SlotTypeAttribute 指定の他、Componentクラスに制約される。
AssetObjectParameterReference | ClassTypeConstraintAttributeから派生したクラス SlotTypeAttribute 指定の他、アセットオブジェクト型に制約される。