인터페이스 클래스 : 해당 클래스를 상속받는 모든 클래스에게 인터페이스 클래스 내부의 함수 및 변수를 필수적으로 선언하여 포함하도록 강제하는 장치.
이로 인해 해당 인터페이스 클래스를 상속받은 클래스들은 그 클래스가 어떤 클래스인지를 따질 필요 없이 인터페이스 클래스 내부에 있는 함수는 바로 가지고올 수 있다 (반드시 만들어야하므로, 반드시 포함되어 있기 때문)
Interface Class의 선언
1 2 3 4 | public interface I_item //헤더도 필요 없이 바로 이대로 선언한다 { void Use(); //여기 써있는 클래스 내부 함수는 상속받은 Child들은 무조건 생성해야 한다 } | cs |
단, 인터페이스 클래스의 경우 함수를 선언까지만 할 뿐 함수 내부 기능을 만들진 않는다. 따라서 이것을 사용하는 자식 클래스들은 인터페이스에 선언된 함수 자체는 반드시 포함하고 있어야 하지만, 그 내용은 각 클래스의 기능별로 상이하게 꾸밀 수 있다.
Interface Class의 상속 및 활용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class Check_Interface : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } private void OnTriggerEnter(Collider other) { //아이템 하나하나를 전부 다 체크할거없이 I_item 인터페이스 상속여부만 체크 I_item item = other.GetComponent<I_item>(); if(item != null) //I_item 인터페이스로써 리턴이 되면(상속이 된 놈이면) { item.Use(); //Use를 실행할것 (I_item 인터페이스에 강제된 함수이므로 무조건 존재) } } } | cs |
이런식으로 하나의 속성 (item들 , monster들 등등)을 통째로 묶어서 처리가 가능함. 이게 아니었으면 아이템마다 (이게 돈이면 코인 올리고 이게 회복템이면 회복하고 이게 몹이면 데미지 입고 등등...) 처리를 일일히 다 해줘야할 것.
'Programming > Unity - Reference' 카테고리의 다른 글
[Unity C# Reference] Properties (0) | 2018.06.11 |
---|---|
[Unity C# Reference] Abstract Class (0) | 2018.06.11 |
[Unity C# Reference] Physics.Raycast (0) | 2018.06.11 |
[Unity C# Reference] Transform (0) | 2018.06.11 |
[Unity C# Reference] CoRoutine (0) | 2018.06.10 |