找回密码
 立即注册
楼主: stonstad

[笔记] 请问 Android APP 用 Java 开发的,游戏引擎用 unity 3D,语言是C#怎么回事?

[复制链接]
发表于 2021-4-22 10:39 | 显示全部楼层
C# - IL
IL - cpp  (unity的一个特性)
Java JNI 调用cpp编译的内容。
发表于 2021-4-22 10:46 | 显示全部楼层
首先我觉得题主有个无趣,就是说android上的软件都只能用java开发,其实不是的,也可以用native(c/c++开发).Unity的主要部分是用c++写的,这样才有可能跨平台代码复用。
Unity内部的主要脚本语言是C#没错。手机上UnityC#的执行有2种方案:
    Mono:也就是Unity在自己程序内部又实现一个C#虚拟机。il2cpp:打包的时候把C#代码翻译成C++
发表于 2021-4-22 10:55 | 显示全部楼层
C#有mono和.net core
Android的内核是Linux内核
引擎能支持Android也不奇怪
发表于 2021-4-22 10:57 | 显示全部楼层
一句话,就是c#也可以开发安卓程序。xamarin了解一下
不止是c#,
c++,javascript,甚至python都可以开发安卓程序。
实际上任何一种语言都可以开发安卓程序,只是java用的人最多,官方最推荐罢了。
发表于 2021-4-22 11:02 | 显示全部楼层
语言只是编译器的输入框罢了,什么语言有什么特性那还得看编译器和运行环境,android原生开发是通过skia 2d引擎渲染,它完成不了更复杂的2d渲染,或者效率不够,需要借助规模更大的外嵌引擎,此时开发操作就是由一个android原生入口-> 外接一个view,这个view就是unity 构建工具渲染出来的原生控件,中层结构会启动外嵌unity引擎 /或者UE引擎, 这样就能达到android游戏效果。


只要你愿意,用纯外嵌引擎做游戏的方式做一个原生app也未必不可。
发表于 2021-4-22 11:04 | 显示全部楼层
查一下JNI是什么,你就知道了
发表于 2021-4-22 11:12 | 显示全部楼层
游戏也是一种APP(application,应用程序)。
Unity 的脚本层是 C# 不假,但底层图形库和物理引擎和其他一些东西是 C++,还有着色器语言。发布到安卓的部分是安卓系统认识的本机代码和虚拟机认识的中间语言——后半部分和 Java 就一样了。
有时候还会引入 Lua 装胶水层代码,还是和 Java 一样,有虚拟机解释代码,程序能跑。
安卓开发的 C# 路线有 Xamarin,你在微软的网站上能找到文档,就是在国内没啥存在感。
换成其他游戏引擎比如 Cocos Creator、白鹭、LayaBox 这些,背后原理还是一样的,C++ 实现的基础工具加上一种业务逻辑脚本,只是脚本层用的语言不一样。
发表于 2021-4-22 11:19 | 显示全部楼层
一坨肉可以用水做成水煮肉片,也能用火做成烤肉,结果都能吃。
你用中文写一个故事,欧美人用英语写一个故事,最后人类都能阅读。
一个软件是代码写的,用java的编程工具写java代码,也能用u3d编程工具写c#代码,最后机器都能识并运行别这个软件。
安卓机上的软件或游戏可以用你知道的任何语言开发,最后用java调用。例如盒饭可以用任何方法做出来,但是最后只允许用固定的盒子装饭菜。
发表于 2021-4-22 11:25 | 显示全部楼层
内核本身就是Linux,只不过应用层语言java而已,最终系统调用都是C/C++。
发表于 2021-4-22 11:31 | 显示全部楼层
套壳,uniapp你不写Java代码也能开发app,unity 3d是用c#,也可以导出Android 格式,Android 本身就有能调用JavaScript和c#的方法,Android 是Java写的,并不代表只读Java。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 12:42 , Processed in 0.117114 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表