# スロットの型制約

一部のスロットでは、属性を使用して接続可能な型に制約を設定できます。

## スクリプト例

TestConstraintSlotBehaviourスクリプトファイルを作成し、以下のコードを記述してください。

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

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

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

    	public override void OnStateBegin()
    	{
    		AudioSource source_ = audioSource.GetValue<AudioSource>();
    		if (source_ != null)
    		{
    			source_.clip = audioClip.GetValue<AudioClip>();
    		}
    	}
    }

## 使用できる属性

クラス | 属性
--- | ---
OutputSlotAny | SlotTypeAttribute
InputSlotAny | ClassTypeConstraintAttributeから派生したクラス SlotTypeAttribute
InputSlotComponent | ClassTypeConstraintAttributeから派生したクラス SlotTypeAttribute 指定の他、Componentクラスに制約される。
InputSlotUnityObject | ClassTypeConstraintAttributeから派生したクラス SlotTypeAttribute 指定の他、UnityEngine.Objectクラスに制約される。
FlexibleComponent | ClassTypeConstraintAttributeから派生したクラス SlotTypeAttribute 指定の他、Componentクラスに制約される。