以下の内容はhttps://baba-s.hatenablog.com/entry/2019/12/25/084000より取得しました。


【Unity】構造体をインターフェイスで受け取ると GC Alloc が発生するが Generic 制約でインターフェイスを指定すると発生しない

概要

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 )
    {
    }
}

構造体をインターフェイスで受け取ると

f:id:baba_s:20191224112236p:plain

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 制約でインターフェイスを指定すると

f:id:baba_s:20191224112301p:plain

GC Alloc は発生しない

参考サイト様

https://www.slideshare.net/xin9le/dotnetperformancetips-170268354




以上の内容はhttps://baba-s.hatenablog.com/entry/2019/12/25/084000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14