UNity 发布到安卓显示帧数的软件后帧数很低,怎么办??

程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之使用Android的硬件缩放技术优化执行效率
Unity3D研究院之使用Android的硬件缩放技术优化执行效率
围观42882次
编辑日期: 字体:
Andoird太头疼了,尤其有些机器就是屏幕大别的硬件条件都很烂,为了优化渲染效率可以试试安卓的硬件缩放技术,我在真机上已经测试通过,效率确实提升了很多,FPS直线上升。。
但是需要拿到Unity android的GLSurfaceView,可是我试过了很多办法就是拿不到它,不过还好Unity 直接提供了方法。
找一个合适的地方调用如下方法即可,这个方法在IOS和Android上都支持,但是经过测试IOS没必要使用,在android上还是很有必要使用的。
Screen.SetResolution(960,640,true);
这样会强制把屏幕的分辨率指定成960X640. 但是你的目标设备的分辨率可能不是3:2的,所以你需要做一个算法,假设搭建界面的时候是960X640,此时运行在的分辨率上, 和 960X640 等比换算一下 即可。代码我就不贴了。。。使用如下代码可以取出当前手机的屏幕分辨率,根据算法算一下就行了。
int width = Screen.currentResolution.
int height = Screen.currentResolution.
还有一点需要注意,经过我的测试发现 横屏游戏时 Android切到后台在返回前台渲染区域变成竖屏了。 所以每次切到前台的时候一定要强制设置一下分辨率。
void OnApplicationPause(bool paused) {
Logger.Print("paused:", paused);
if (!paused) { &&&&&&&&&&&&Screen.SetResolution(960,640,true);
还有个问题就是当调用Screen.SetResolution(960,640,true); 紧跟着就打开NGUI界面,可能会造成UI闪烁一下。我想最好可以通过unity的GLSurfaceView在java内层去设置分辨率,但是我不知道怎么取到GLSurfaceView,或者如果有朋友知道请在下面留言告诉我一下。
做一个比较简单的界面, 界面上就写上 “正在加载中..”几个大字,因为背景是黑的闪就闪吧反证我们的策划说能忍。。
IEnumerator Start() {&&&&&&&&&&&&&&&&Screen.SetResolution(960,640,true);
yield return new WaitForSeconds(0.1f);
//在下面代码里面在处理设置完分辨率以后的逻辑 }
可能我上面写 Screen.SetResolution(960,640,true); 可能会误导大家,我举个里例子。开发的时候布的界面是 960X640 ,此时运行在 上。 那么 修改后的分辨率 就是 Screen.SetResolution(,true);
因为 1138 = 1280/(720/640)但是你还要去考虑 比 960X640 大的情况 或者 比 960X640小的情况。 总之就是等比例的计算 目标分辨率。如果一个是960 另一个就按比例算, 如果一个是640 另一个也按比例算。
设置分辨率以后不会影响到你的代码原有的任何逻辑,效率确实提升了很多,建议大家最好在android上用一下。嘿嘿。欢迎大家在下面给 @雨松MOMO 留言,大家一起讨论。。
12345678910111213141516171819202122232425262728293031323334353637383940414243
private int scaleWidth =0; private int scaleHeight =0; public void setDesignContentScale() {#if UNITY_ANDROID
if(scaleWidth ==0 && scaleHeight ==0)
int width = Screen.currentResolution.width;
int height = Screen.currentResolution.height;
int designWidth = 960;
int designHeight = 640;
float s1 = (float)designWidth / (float)designHeight;
float s2 = (float)width / (float)height;
if(s1 & s2) {
designWidth = (int)Mathf.FloorToInt(designHeight * s2);
} else if(s1 & s2) {
designHeight = (int)Mathf.FloorToInt(designWidth / s2);
float contentScale = (float)designWidth/(float)width;
if(contentScale & 1.0f) {
scaleWidth = designWidth;
scaleHeight = designHeight;
if(scaleWidth &0 && scaleHeight &0)
if(scaleWidth % 2 == 0) {
scaleWidth += 1;
scaleWidth -= 1;
Screen.SetResolution(scaleWidth,scaleHeight,true);
}#endif }& void OnApplicationPause(bool paused) {
if (paused) {
setDesignContentScale();
我在补充一下: 这个方法不会影响NGUI的自适应,也不会影响游戏原有的任何逻辑也不用在改别的代码,在各种Android分辨率上都可行,效率就可以提升很多。我们项目已经轰轰烈烈的使用了,唯一的缺点就是设置分辨率的时候屏幕会闪一下。可以做一个黑屏 或者 几个字“正在加载中” 。。 所以我想在java层去改, 但是拿不到GLSurfaceView 。。如果有知道的朋友请在下面留言告诉我。谢谢。
这两天测试发现有时候按下手机的关机键,然后在返回游戏发现游戏屏幕竖过来了(我们是横屏游戏)。而且是随机性的,效果如下图所示:
在这两篇文章中我找到了答案
解决这个问题需要在java这一层来配合,需要改一下你的UnityPlayerNativeActivity.java
12345678910111213141516171819202122232425
private int width,height; // Setup activity layout @Override protected void onCreate (Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);&
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);&
mUnityPlayer = new UnityPlayer(this);
if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
&&&&&&&&&&&&&&&&&&&&&& WindowManager.LayoutParams.FLAG_FULLSCREEN);&
setContentView(mUnityPlayer);
mUnityPlayer.requestFocus();
//保存一下游戏屏幕的宽和高
DisplayMetrics dm = getResources().getDisplayMetrics();
width = dm.widthPixels;
height = dm.heightPixels;
还是在这个类里。
123456789101112
// This ensures the layout will be correct. @Override public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//在这里强制设置一下屏幕的宽和高
mUnityPlayer.getView().getLayoutParams().width = width;
mUnityPlayer.getView().getLayoutParams().height = height;
Log.v("unity", width+" " + height );
mUnityPlayer.configurationChanged(newConfig);
好了,目前我用这个方法已经完美解决了这个问题,大家如果还有什么好得经验分享,欢迎在下面给我留言。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!12:16 提问
unity发布安卓平台出错
CommandInvokationFailure: Failed to recompile android resource files.
D:/Android/Java\bin\javac.exe -bootclasspath "D:/Android/sdk\platforms\android-23\android.jar" -d "C:\Users\Administrator\Desktop\Shoot\ARPG\Temp\StagingArea\bin\classes" -source 1.6 -target 1.6 -encoding UTF-8 "com\google\vr\cardboard\R.java" "com\xxx\ARPG\R.java" "vr\gvr\platform\unity\R.java"
????: ?????????????????? com.sun.tools.javac.Main
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg, Int32 retiresOnFailure)
UnityEditor.HostView:OnGUI()
什么原因导致的
求大神帮忙指导一下
按赞数排序
修改JDK版本,具体百度
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐关于安卓平台 怎么优化来提高帧数【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:86,310贴子:
关于安卓平台 怎么优化来提高帧数收藏
u3d刚刚才入门不久,做了个DEMO,PC平台毫无疑问可以跑到60满帧,但是发布到android平台上帧数就比较低了,高通的cpu还好,骁龙600的U可以到48帧,换到国产的一些芯片,搭载mail系列gpu的,居然只有24帧,一些效果会有明显的卡顿感。求助各位有什么办法可以快速的优化,十分感谢。
本来就没必要把手机游戏做到60帧吧, 30帧够用了
cpu:资源加载模式!同步异步怎么样分配!频繁调用的代码,不要new对象!加缓冲池,减少gc!等等gpu:减少图片大小!不变的模型选静态批次!减少带宽!shader减少变种!减少透明物体的叠加!减少填充!等等!自己可以百度一下!这样的问题
登录百度帐号扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
关注:2206
当前位置: &
__________________________________________________________________________________
开发者干货区版块规则:
  1、文章必须是图文形式。(至少2幅图)
& && &2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
& && &3、本版块只支持在游戏蛮牛原创首发,不支持转载。
& && &4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
& && &5、......
__________________________________________________________________________________
查看: 18178|回复: 322
Unity发布安卓:三步教你发布自己的apk文件
本帖为抢楼帖,欢迎抢楼!&
9排名<font color="#FF昨日变化2主题帖子积分
蛮牛币6090
在线时间616 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
在我们写完游戏之后每个人都想发布成.apk文件,然后安装在自己的手机里,一来测试效果怎么样,二来可以玩玩自己发布的,感觉都是挺不错的,下面就介绍一下Unity发布成安卓apk文件的一些设置,其实也很简单,三步教你发布自己的安卓游戏。
第一步:JAVA环境变量设置:
下载安装jdk-7u40-windows-x64,我自己电脑是64位,你可以下载适合你电脑操作系统的jdk然后来安装..我的安装目录是:.C:\Program Files\Java\jdk1.7.0_40(这个就是你自己的安装目录,你可以自己设置),配置java环境变量,这些配置网上都有我也把配置给大家说下:
1.在系统变量新建JAVA_HOME变量,变量值:C:\Program Files\Java\jdk1.7.0_40(这个就是你自己的安装目录)
1.png (34.31 KB, 下载次数: 93)
12:54 上传
2.在系统变量里面配置path路径,一般path变量已经存在,然后再后面加上;%JAVA_HOME%\bin,一定不要忘了前面的分号。
2.png (34.43 KB, 下载次数: 81)
12:55 上传
3.新建CLASSPATH变量,变量值写.;%JAVA_HOME%\lib\dt.%JAVA_HOME%\lib\tools.jar主要前面的符号。(其实这个classpath不配置也可以)
3.png (34.14 KB, 下载次数: 145)
12:56 上传
4.配置是否成功就在命令提示符中输入javac,然后回车,如果出现一大堆介绍东西的说明JAVA环境变量配置成功
5.jpg (47.92 KB, 下载次数: 151)
12:57 上传
第二步:安卓SDK设置首先解压安卓SDK,我直接放在C盘program files文件下,在unity软件中,Edit——&preferences——&External Tools——& SDK Location点击Browse来选择 SDK的位置,我自己中安卓SDK的位置如下(必须选到sdk):C:\Program Files\adt-bundle-windows-x86_64-\adt-bundle-windows-x86_64-\sdk
7.jpg (48.08 KB, 下载次数: 64)
13:01 上传
6.jpg (38.88 KB, 下载次数: 108)
13:00 上传
第三步:平台转换,发布在Unity软件中,File——&Build setting,首先转换成安卓平台,然后点击player setting,必须填写的内容:Company Name 和Product Nam以及Other Settings下的 Bundle Identifier的填写必须与上面的Company Name和Product Name对应,否则的话发布是不会成功的,其他的&&比如Default Icon可以自己来添加自己的logo,启动图标和进入游戏背景图标都可以自己来设置
8.jpg (53.4 KB, 下载次数: 114)
13:08 上传
以上三步完成之后,可以发布成安卓.apk文件,然后可以导入自己的智能手机去Happy吧.....======================java_jdk(64位)和安卓SDK在下面网盘文件中.....想发布自己的,就去下载吧
游客,如果您要查看本帖隐藏内容请unity 安卓 发布;unity怎么发布unity发布到安卓;unity如何在安卓上发布;unity发布安卓;unity 怎么发布安卓;unity 发布unity如何发布apk
神马都是浮云
每日推荐:
头像被屏蔽
0排名<font color="#FF昨日变化主题帖子积分
蛮牛币3971
在线时间1193 小时
提示: 作者被禁止或删除 内容自动屏蔽
每日推荐:
4369/500排名<font color="#FF昨日变化3主题帖子积分
四处流浪, 积分 369, 距离下一级还需 131 积分
四处流浪, 积分 369, 距离下一级还需 131 积分
在线时间69 小时
不错 顶顶 & && && && && && && && && && && && && && && && && && && && && &&&
每日推荐:
3276/300排名<font color="#FF昨日变化2主题帖子积分
偶尔光临, 积分 276, 距离下一级还需 24 积分
偶尔光临, 积分 276, 距离下一级还需 24 积分
在线时间59 小时
.................................................
每日推荐:
无效楼层,该帖已经被删除
5889/1000排名<font color="#FF昨日变化3主题帖子积分
熟悉之中, 积分 889, 距离下一级还需 111 积分
熟悉之中, 积分 889, 距离下一级还需 111 积分
蛮牛币3574
在线时间152 小时
谢谢 楼主分享。。学习 学习。。
每日推荐:
7排名<font color="#FF昨日变化2主题帖子积分
蛮牛币6146
在线时间692 小时
谢谢楼主分享,发布一个试试
每日推荐:
4480/500排名<font color="#FF昨日变化1主题帖子积分
四处流浪, 积分 480, 距离下一级还需 20 积分
四处流浪, 积分 480, 距离下一级还需 20 积分
在线时间137 小时
Kingdom Rush OriginsKingdom Rush Origins
每日推荐:
2134/150排名<font color="#FF昨日变化10主题帖子积分
初来乍到, 积分 134, 距离下一级还需 16 积分
初来乍到, 积分 134, 距离下一级还需 16 积分
在线时间9 小时
哇 ~~& && && && && && &简单明了的教程
每日推荐:
7排名<font color="#FF昨日变化1主题帖子积分
在线时间492 小时
留个足迹!!!!!!!!!!!!!!!1
每日推荐:
112/50排名<font color="#FF昨日变化27主题帖子积分
注册看看, 积分 12, 距离下一级还需 38 积分
注册看看, 积分 12, 距离下一级还需 38 积分
在线时间0 小时
影藏内容是什么?
我看看!!!
每日推荐:
71540/5000排名<font color="#FF昨日变化2主题帖子积分
日久生情, 积分 1540, 距离下一级还需 3460 积分
日久生情, 积分 1540, 距离下一级还需 3460 积分
蛮牛币5823
在线时间435 小时
........................
每日推荐:
132/50排名<font color="#FF昨日变化14主题帖子积分
注册看看, 积分 32, 距离下一级还需 18 积分
注册看看, 积分 32, 距离下一级还需 18 积分
在线时间7 小时
来自Mobile---
谢谢分享,找了很久了!终于可以玩了
每日推荐:
61304/1500排名<font color="#FF昨日变化主题帖子积分
蛮牛粉丝, 积分 1304, 距离下一级还需 196 积分
蛮牛粉丝, 积分 1304, 距离下一级还需 196 积分
蛮牛币3969
在线时间369 小时
好好好,支持!!!支持!!!支持!!!
每日推荐:
61013/1500排名<font color="#FF昨日变化1主题帖子积分
蛮牛粉丝, 积分 1013, 距离下一级还需 487 积分
蛮牛粉丝, 积分 1013, 距离下一级还需 487 积分
在线时间268 小时
看看看看看看看看看看看看看看看看
每日推荐:
连续签到30天
蛮牛论坛干货区作者
认证开发者
经过游戏蛮牛认证的独立开发者
经过游戏蛮牛认证的蛮牛小翻译
购买游戏蛮牛书籍
社区QQ达人
使用QQ帐号登录论坛的用户没有更多推荐了,
不良信息举报
举报内容:
Unity3D适配安卓时的那些坑
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 安卓显示帧数的软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信