Unity/수업 내용

[Unity 2020.3] Interface 상속

JSH1 2021. 11. 30. 16:09

Interface
여러클래스에 공통적인 기능을 추가하기 위해서 사용
interface를 상속받으면 멤버를 반드시 구현해야 한다

 

https://docs.unity3d.com/ScriptReference/Material.html


 

using UnityEngine;

public interface IColor
{
    void ColorChange(GameObject obj);
}
using UnityEngine;

public class ColorBlue : MonoBehaviour, IColor
{
    public void ColorChange(GameObject obj)
    {
        Renderer rend = obj.GetComponent<Renderer>();
        rend.material.color = Color.blue;

        Destroy(gameObject);
    }
}
using UnityEngine;

public class ColorGreen : MonoBehaviour ,IColor
{
    public void ColorChange(GameObject obj)
    {
        Renderer rend = obj.GetComponent<Renderer>();
        rend.material.color = Color.green;

        Destroy(gameObject);
    }
}

 

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Rigidbody rbody;
    private Vector3 move;

    void Start()
    {
        rbody = GetComponent<Rigidbody>();
        move = Vector3.zero;
    }

    void Update()
    {
        move.x = Input.GetAxis("Horizontal");
        move.z = Input.GetAxis("Vertical");

        rbody.MovePosition(transform.position + move * 5 * Time.deltaTime);
    }

    private void OnTriggerEnter(Collider other)
    {
        other.GetComponent<IColor>().ColorChange(gameObject);
    }
}