Unity后端Server实现方案

本文深入研究在Unity中使用NetCore实现后端服务的可能性,通过DllImport方式替换Native底层,探讨了GameObject注入实践、Unity中非Native方法的整理,以及面临的问题和潜在解决方案。文章提到了矩阵与向量计算、Euler角转换、物理引擎简化、网络引擎选择和数据库对接策略,揭示了Unity后端开发的复杂性和挑战。
摘要由CSDN通过智能技术生成

引言

在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)]</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值