需求背景
用Unity开发的游戏, 需要做个关卡编辑器. 如果只是内部用用, 其实直接扩展Unity就够了; 但问题是需要发布给外部的用户使用, 那么总不能把全套资源和Unity发给他们, 所以就诞生了这么个奇葩需求.
技术挑战
- 既然用了Unity引擎, 那么渲染肯定还是用Unity, 怎么在外面套一堆UI面板?
- UI需要使用传统的方式来开发, 什么Qt/Winforms/WPF/Web等, 用Unity内置的UI也是一个思路
- 游戏内的逻辑基本都在mono虚拟机上跑, 外面再搞一套UI逻辑的话, 怎么做到公共代码的复用?
- Unity在不改源码的情况下没法直接跟外部的UI框架逻辑互调, 所以需要进程间通信
- 在跨进程的情况下, 怎么做到比较方便的方法调用和属性编辑?
GUI框架技术
Unity渲染窗口
问题就是怎么把Unity嵌入到现有的一些GUI窗口中? 搜索一下已经有人问过了:
https://answers.unity.com/questions/871077/how-to-display-unity-scene-in-a-qt-window.html
https://stackoverflow.com/questions/44059182/embed-unity3d-app-inside-wpf-application