引言
在Unity与NetCore使用方案中
https://blog.csdn.net/FeiBin2013/article/details/86574687
讨论过如何在NetCore中使用UnityEngine 库的问题,本文进行更加详细的调查。
先还是尝试使用注入的方式替换部分Native底层
Unity注入GameObject实践
本文以CreatePrimitive方法为例,实现注入把其修改为通过DllImport的方式,实现替换其Native实现
[MethodImpl (MethodImplOptions.InternalCall)]
[FreeFunction ("GameObjectBindings::CreatePrimitive")]
public static extern GameObject CreatePrimitive (PrimitiveType type);
第一步是需要先定义GameObject的C++版本,即Native代码部分,
需要先整理并收集其成员和属性
先看本Class中的一些属性,目前只有一个scene。
其它的已经标注为Deprecated,通过GetComponent的方式获取。
但由于如果C++中不定义完整的话就会出现Marshaling异常。
需要先实现对Scene和Component的类的Marshaling。当然可以只返回个无用的对象。
public Scene scene {
[FreeFunction ("GameObjectBindings::GetScene")]
get;
}
public GameObject gameObject => this;
[EditorBrowsable (EditorBrowsableState.Never)]
[Obsolete ("Property rigidbody has been deprecated. Use GetComponent<Rigidbody>() instead. (UnityUpgradable)", true)]</