概要
using UnityEngine; public interface ICharacter { } public struct Character : ICharacter { } public class Example : MonoBehaviour { private Character m_character = new Character(); private void Update() { Hoge1( m_character ); } private void Hoge1( ICharacter character ) { } }
構造体をインターフェイスで受け取ると
GC Alloc が発生するが
using UnityEngine; public interface ICharacter { } public struct Character : ICharacter { } public class Example : MonoBehaviour { private Character m_character = new Character(); private void Update() { Hoge2( m_character ); } private void Hoge2<T>( T character ) where T : ICharacter { } }
Generic 制約でインターフェイスを指定すると
GC Alloc は発生しない
参考サイト様
https://www.slideshare.net/xin9le/dotnetperformancetips-170268354