Unity3D主要使用的脚本语言是C#与javascript并没有java,推荐使用C#来写比较好吧
而且Unity的脚本,C#与javascript写的都可以用工具互转可以在网上搜一下。
哦哦那我用js写完。然后怎么变成安卓的apk呢。小白不懂
哦哦,那我用js写完然后怎么变成安卓的apk呢。。尛白不懂
你对这个回答的评价是
多插件是c#,并且考虑
来说c#是不二之选。学习unity一个是要花时间按把c#语言学会,然后学习unity官方的api文档哃时结合开发加深理解
你对这个回答的评价是?
虽然不知道UNITY3D是个什么东东不过在android机器上运行的程序都是android语言写的。楼主可以先学习下java基礎
都回答错了。就不用谢了。
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或許有别人想知道的答案。
这篇文章和大家分享我的安卓游戲开发发工具涉及到的工具没有优先级先后顺序
如果上线Google Play,安卓要求APK中包含64位代码能构建64安卓安装包的最低引擎版本是Unity2017.4。选择Unity2018一方面昰安卓64位要求另一方面Unity2018完全放开Package Manager功能(此功能Unity2017.4也有,但不成熟没有放开)。有了包管理器就可以通过包管理器来下载使用Unity的新功能,比如Jobs
比MonoDeveloper使用上更顺手一些Rider没有用过,有兴趣的可以尝试Vusal Studio 2017不像2015那么臃肿,安装体积小相关扩展也是用则装,不用不会强制安装因為没有找到Visual Studio 2019免费可用的Visual Assist X插件(强烈推荐安装此插件),所以放弃了2019(2019支持的dotNet库版本更高更新一些)
大部分公司商业项目会选择SVN做为版本管理工具,部署和使用都比较简单策化及美术也能不费力地熟练使用。SVN客户端一般为TortoiseSVN带图形操作界面,安装时建议勾选SVN命令行支持這样就可以把常用的SVN功能集成到Unity-Project视图的右键菜单里,对单显示器开发者极其友好免除来回切换Unity和Win资源管理器的烦恼。
Git配合Git代码托管平台(GitHub、码云等上篇有介绍)使用。Git有本地仓库在学习他人优秀项目时,可以对项目做个本地Git仓库对源码改动后可以方便的回滚到源码狀态。本人基本上是用Git管理学习项目没有太复杂的版本管理要求,所以没有用Git图形化工具有图形化工具需求的小伙伴自行百度吧。附個Git命令作用区间图:
安卓模拟器 - 雷电模拟器
模拟器完全是看个人喜好市面上的各大模拟器功能也大径相同,这个没有什么纠结的
Google的原苼模拟器可以设置刘海屏,调屏幕宽高适配的小伙伴可以考虑
功能强大的老字号比对工具。支持文件、片段、文件夹等资源的比对找錯、查差异必备。
GitHub开源应用解包APK、查看签名指纹。使用时把APK拖到.bat文件上即可弹出解包图形界面非常方便。
对于国内渠道目前还可以用eclipse接SDK目前国内各渠道提供的SDK Demo用eclipse的仍然居多。而Google发包的64位硬性要求直接导致eclipse接SDK的方案过时从eclipse转向Android Sdudio也相对简单些。碍于发展趋势能用AS还是忣早转向AS吧。
另外AS还可以用来做真机调试、查Log、查性能消耗等
GitHub开源项目,dll文件的反编译利器类似还有ILSpy(有VS插件)。
在Unity mono出包的时代用来反编譯市面上未加密的APK目前商业项目IL2CPP构建方式居多,构建的包内无dll
可以反编译Unity的部分类库,比如UI类库和Editor类库学习Unity的内部实现思路。也可鉯反编译某些第三方插件的dll类库
总之,看到心动的dll就用它反编译试试
同是GitHub开源项目,可以提取AssetBundle中的一切资源(Shader资源提取出来是编译后嘚资源需要自行翻译)。应用场景自行脑补
这个工具还可以用来检测项目打出来的AssetBundle是否完整、合理。对游戏运行丢贴图、丢模型等Bug排查会有帮助
Unity Profiler查卡顿和整体性能,性能优化的主力工具Memory Profiler前后截快照对比,查内存泄露更方便
两个工具都可以调试真机。
最后再次强調,以上分享是我个人的开发环境和所用工具给大家一个参考。开始环境和工具没有最好的只有顺手的,及早构建一定要养成好习慣。
欢迎关注公众号定期分享Unity的实用技巧~~
一、遇到麻烦时要调用“垃圾回收器”(Garbage Collector无用单元收集程序,以下简称GC)
由于b893e5b19e64具有C/C++游戏编程背景我们并不习惯无用单元收集程序的特定行为。确保自动清理你不用的內存这种做法在刚开始时很好,但很快你就公发现自己的分析器经常显示CPU负荷过大原因是垃圾回收器正在收集垃圾内存。这对移动设備来说尤其是个大问题要跟进内存分配,并尽量避免它们成为优先数以下是我们应该采取的主要操作:
移除代码中的任何字符串连接,因为这会给GC留下大量垃圾
2.用简单的“for”循环代替“foreach”循环。由于某些原因每个“foreach”循环的每次迭代会生成24字节的垃圾内存。一个简單的循环迭代10次就可以留下240字节的垃圾内存
3.更改我们检查游戏对象标签的方法。用“if (gopareTag (“Enemy”)”来代替“if (go.tag == “Enemy”)” 在一个内部循环调用对象汾配的标签属性以及拷贝额外内存,这是一个非常糟糕的做法
4.对象库很棒,我们为所有动态游戏对象制作和使用库这样在游戏运行时間内不会动态分配任何东西,不需要的时候所有东西反向循环到库中
5.不使用LINQ命令,因为它们一般会分配中间缓器而这很容易生成垃圾內存。
二、谨慎处理高级脚本和本地引擎C++代码之间的通信开销
所有使用Unity3D编写的游戏玩法代码都是脚本代码,在我们的项目中是使用Mono执行時间处理的C#代码任何与引擎数据的通信需求都要有一个进入高级脚本语言的本地引擎代码的调用。这当然会产生它自己的开销而尽量減少游戏代码中的这些调用则要排在第二位。
1.在这一情景中四处移动对象要求来自脚本代码的调用进入引擎代码这样我们就会在游戏玩法代码的一个帧中缓存某一对象的转换需求,并一次仅向引擎发送一个请求以便减少调用开销。这种模式也适用于其他相似的地方而鈈仅局限于移动和旋转对象。
2.将引用本地缓存到元件中会减少每次在一个游戏对象中使用 “GetComponent” 获取一个元件引用的需求这是调用本地引擎代码的另一个例子。
1.将物理模拟时间步设置到最小化状态在我们的项目中就不可以将让它低于16毫秒。
2.减少角色控制器移动命令的调用移动角色控制器会同步发生,每次调用都会耗损极大的性能我们的做法是缓存每帧的移动请求,并且仅运用一次
3.修改代码以免依赖“ControllerColliderHit” 回调函数。这证明这些回调函数处理得并不十分迅速
4.面对性能更弱的设备,要用skinned mesh代替physics clothcloth参数在运行表现中发挥重要作用,如果你肯婲些时间找到美学与运行表现之间的平衡点就可以获得理想的结果。
5.在物理模拟过程中不要使用ragdolls只有在必要时才让它生效。
6.要谨慎评估触发器的“onInside”回调函数在我们的项目中,我们尽量在不依赖它们的情况下模拟逻辑
7.使用层次而不是标签。我们可以轻松为对象分配層次和标签并查询特定对象,但是涉及碰撞逻辑时层次至少在运行表现上会更有明显优势。更快的物理计算和更少的无用分配内存是使用层次的基本原因
8.千万不要使用Mesh对撞机。
9.最小化碰撞检测请求(例如ray casts和sphere checks)尽量从每次检查中获得更多信息。
我们使用AI敌人来阻拦忍鍺英雄并同其过招。以下是与AI性能问题有关的一些建议:
1.AI逻辑(例如能见度检查等)会生成大量物理查询可以让AI更新循环设置低于图潒更新循环,以减少CPU负荷
五、最佳性能表现根本就不是来自代码!
没有发生什么情况的时候,就说明性能良好这是我们关闭一切不必偠之物的基本原则。我们的项目是一个侧边横向卷轴动作游戏所以如果不具有可视性时,就可以关闭许多动态关卡物体
1.使用细节层次嘚定制关卡将远处的敌人AI关闭。
2.移动和障碍当它们远去时其物理碰撞机也会关闭。
3.Unity内置的“动画挑选”系统可以用来关闭未被渲染对象嘚动画
4.所有关卡内的粒子系统也可以使用同样的禁用机制。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。