用手机怎么玩微信玩大皇帝进游戏的时候进度条读不出来

程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
围观45081次
编辑日期: 字体:
异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务。在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene”);
这句代码执行完毕后程序会干什么呢??如下图所示,这是我随便找了一个游戏场景, 在Hierarchy视图中我们可以看到该场景中“天生”的所有游戏对象。天生的意思就是运行程序前该场景中就已经存在的所有游戏对象。然后这些对象就会在执行完Application.LoadLevel(“yourScene”);方法后加载至内存当中。如果该场景中的游戏对象过多那么瞬间将会出现卡一下的情况,因为LoadLevel()方法是同步进行的。MOMO把这种加载起个名字叫A形式加载。
下面我说说“后天“加载的游戏对象。意思是这些游戏对象是通过脚本动态的创建出来的。比如常用方法 :
GameObject Obj = (GameObject)Instantiate(prefab);
这句代码执行完毕后同样会在Hierarchy视图中添加对应的游戏对象。MOMO把这种加载起个名字叫B形式加载。
下面我们学习异步加载游戏场景,异步异步顾名思义就是不影响当前游戏场景的前提下加载新场景。通常异步加载的方式分为两种:第一种是异步加载新游戏场景,当新场景加载完成后进入新场景并且销毁之前的场景。第二种:同样异步加载新场景,新场景加载完毕后,保留旧场景的游戏对象并且进入新场景。 这里加载的内容就是上面提到的A形式加载。然后B形式加载不会记入这里的加载。
第一种异步加载游戏场景对应的方法是:
Application.LoadLevelAsync("yourScene");
第二种异步家在游戏场景对应的方法是:
Application.LoadLevelAdditiveAsync ("yourScene");
这两种方法加载的方式完全一样。异步加载其实重要还是应用于游戏LOADING界面,毕竟LOADING如果采用同步的机制会影响用户体验,说到这里MOMO告诉大家如何在Unity中制作游戏进度条。我们应当在Unity中创建一个专门用于读取进度的场景,假设A场景到C场景,我们应当让A场景先到读取进度的场景B场景,当异步任务完成后在进入C场景。 A – 》B -》 C ,在B场景中绘制游戏进度条或读取动画。因为B场景仅仅是个显示LOADING动画的场景,所以读取该场景是瞬间就完成的。
程序在切换场景时应当有一个全全局的静态变量来记录简要读取的场景名称。这里简单的写一下。
using UnityEngine;using System.Collections;&public class Globe{&&&&&&&& //在这里记录当前切换场景的名称
public static string loadName;}
在A场景中通过某些触发条件 调用LoadLevel进入B场景。
//记录LOADING场景中需要读取的C场景名称Globe.loadName = "C";//先进入B场景Application.LoadLevel ("B");
OK我们在B场景中异步读取C场景与 播放读取动画,Loading.cs 绑定在B场景的摄像机对象身上。当C场景异步读取完毕后即可直接进入C场景。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
using UnityEngine;using System.Collections;&public class Loading : MonoBehaviour {& private float fps = 10.0f; private float time; //一组动画的贴图,在编辑器中赋值。 public Texture2D[] animations; private int nowFram; //异步对象 AsyncOperation async;& //读取场景的进度,它的取值范围在0 - 1 之间。 int progress = 0;& void Start() {
//在这里开启一个异步任务,
//进入loadScene方法。 && StartCoroutine(loadScene()); }& //注意这里返回值一定是 IEnumerator IEnumerator loadScene() {
//异步读取场景。
//Globe.loadName 就是A场景中需要读取的C场景名称。
async = Application.LoadLevelAsync(Globe.loadName);&
//读取完毕后返回, 系统会自动进入C场景
yield return async;& }& void OnGUI() {
//因为在异步读取场景,
//所以这里我们可以刷新UI
DrawAnimation(animations);& }& void Update() {&
//在这里计算读取的进度,
//progress 的取值范围在0.1 - 1之间, 但是它不会等于1
//也就是说progress可能是0.9的时候就直接进入新场景了
//所以在写进度条的时候需要注意一下。
//为了计算百分比 所以直接乘以100即可
progress =&&(int)(async.progress *100);&
//有了读取进度的数值,大家可以自行制作进度条啦。
Debug.Log("xuanyusong" +progress);& } //这是一个简单绘制2D动画的方法,没什么好说的。 void&& DrawAnimation(Texture2D[] tex) {&
time += Time.deltaTime;&
if(time &= 1.0 / fps){&&&&&&&
nowFram++;&&&&&&&
time = 0;&&&&&&&
if(nowFram &= tex.Length)&&&&&&
nowFram = 0;&&&&&&
}&&&&&&&&}
GUI.DrawTexture(new Rect( 100,100,40,60) ,tex[nowFram] );&&&&&&&&&//在这里显示读取的进度。
GUI.Label(new Rect( 100,180,300,60), "lOADING!!!!!" + progress);& }&}
OK 下面我们继续学习在游戏场景中加载对象,文章的开始MOMO已经告诉大家,游戏场景中Hierarchy视图中的所有的对象在切换场景的时候都会加载。其实有一种方法可以让某些游戏对象不会被加载,如下图所示,首先在Hierarchy视图中选择一个游戏对象,在右侧监测面板视图中我们可以看到一个 “小对勾”默认情况下是勾选状态,说明该游戏对象处于激活状态,如果点掉的话该对象将被隐藏。这个小功能在开发中其实用处非常大,请大家务必记住哈。
此时此刻大家相像一个游戏场景,默认进入的时候是没有任何游戏对象的,然后运行游戏时开启一个异步任务将它们一个一个的加载显示出来,这种方式适合异步的加载一个比较大的游戏场景。
Test.cs 把它挂在摄像机对象中。
123456789101112131415161718192021222324252627282930313233343536373839
using UnityEngine;using System.Collections;&public class Test : MonoBehaviour {& //这里是需要加载激活的游戏对象 public GameObject&&[] Objects;& //当前加载的进度 int load_index =0; void Start () { &&&&//开启一个异步任务,加载模型。
StartCoroutine(loadObject()); }& IEnumerator loadObject() {
//便利所有游戏对象
foreach(GameObject obj in Objects)
//激活游戏对象
obj.active = true;
//记录当前加载的对象
load_index ++;&
//这里可以理解为通知主线程刷新UI
yield return 0;
//全部便利完毕返回
yield return 0; }& void OnGUI () { &&&&//显示加载的进度
GUILayout.Box("当前加载的对象ID是: " + load_index); }}
如下图所示,我们把需要加载的游戏对象以数组的形式放在Objects数组中,因为这些对象属于未激活状态,所以不能通过Find 等方法在脚步那种中找到他们。讲到这里我们在说说 编辑器赋值与代码中赋值的区别,编辑器中赋值所消耗的时间都会记在loadlevel ()读取场景中。而代码中使用Resource.load()这类方法所消耗的时间会记在脚本中。开发中还得自行的把握一下把loading加在那里。
当然我们还可以使用Instantiate(prefab);方法来动态的创建游戏对象。
Main.cs 把它挂在摄像机中。
1234567891011121314151617181920212223242526272829303132333435
using UnityEngine;using System.Collections;&public class Main : MonoBehaviour {& public int count; //在编辑器中预设一个游戏对象 public&&GameObject prefab;& void Start () {
StartCoroutine(loaditem()); }& void OnGUI() {
GUILayout.Box("游戏对象已经加载到 : " + count); }& IEnumerator loaditem() {
//开始加载游戏对象
for(int i =0; i& 1000; i++)
Instantiate(prefab);
count = i;
//可以理解为刷新UI,显示新加载的游戏对象
yield return 0;
yield return 0; }}
运行游戏后该游戏对象会循环1000遍逐个创建,不影响主线程。那么今天我们其实学习最多的就是StartCoroutine(),其实就是开启一个异步线程,这里可能有朋友会问Thread可以代替它吗? 答案是不行, 比如查询数据库的时候如果用Thread的话Unity就会报错说不能在线程中查询,但是在StartCoroutine()中就可以完成,所以开发中大家可以尝试着使用它,我们还可以使用StopCoroutine(“name”)来关闭一个正在执行的异步线程。不早了晚安,MOMO祝大家学习愉快。
本文固定链接:
转载请注明:
MOMO与MO嫂提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!csol读取游戏时 进度条读到一半时就自动跳出来了 游戏进不去_百度知道
csol读取游戏时 进度条读到一半时就自动跳出来了 游戏进不去
机子没问题
我有更好的答案
我的也是 不知道为什么 以前还没有事呢
一到认证游戏资源的时候就掉出来
切到房间了
恩 就是这情况
是游戏崩溃还是连接超时?你要说清楚啊
一读到认证游戏资源 就自动退回房间 不是延迟 不是掉线
重新装游戏试试 我以前一重装就好了
对对,我的也是啊,这狗B游戏真的没法玩了,毛病太他妈多了!以前是更新到一半就不动了,现在读条到一半就直接退回到房间。
估计没用了。
是不是给你个对话框: Time out?
不是哦 一读到认证游戏资源 就自动退回房间 不是延迟 不是掉线
其他类似问题
为您推荐:
您可能关注的推广
进度条的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁我玩csol时在游戏大厅屏幕很正常,进入游戏进度条读到1半黑屏 在进入游戏后屏幕就变大了(字体)_百度知道
我玩csol时在游戏大厅屏幕很正常,进入游戏进度条读到1半黑屏 在进入游戏后屏幕就变大了(字体)
大家仔细看下我的描述 谢谢啦,到底怎么回事,今天中午开始的烦了我一下午了以前一直没有
分辨率你好。导致进游戏窗口变大了,视频,你可能更改了分辨率。希望能帮助到你。游戏大厅的默认分辨率为,谢谢。具体设置在CSOL选项里,望好评.你看看你的分辨率是否过大
我在期间没改过分辨率,我吃饭去了 游戏挂J刷分 上来就变着样了
或者是否勾选了宽屏选项?有时你没改并不一定系统不会出错。建议查看一下。如果真的不是这问题,抱歉。我也帮不了你了。
其他类似问题
为您推荐:
其他3条回答
或者QQ对话框什么的,通常只要有这些干扰登陆都会发生你说的状况比如有的网吧游戏广告插件多一塌糊涂,每次登陆都会跑出来干扰你在你进入游戏之间是否有别的什么广告弹出来
我现在也是这种情况,分辨率没调,正玩着呢,一局后又开始游戏画面字和人物都变大了。大厅一切正常,显卡驱动更新不行,重启重装还不行。好像情况好像很少啊,查了两个小时也没有解答好的
您可能关注的推广
进度条的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& 三位一体3 权利圣器 进入游戏读进度条弹出 高手们解决一 ...
查看: 892|回复: 6
UID8147931主题阅读权限20帖子精华0积分5金钱60 荣誉0 人气0 在线时间23 小时评议0
Lv.2游侠会员, 积分 5, 距离下一级还需 195 积分
帖子精华0积分5金钱60 荣誉0 人气0 评议0
下载的三位一体3 免安装中文版&&进入游戏 过完动画 读进度条以后弹出 出现对话框&&如下图&&高手大神们给解决一下 运行库 打包都安装了&&phyx物理加速也更新了&&显卡驱动也是最新的&&我的显卡是华硕GTX660Ti。是物理显卡&&1代和2代都能完美运行&&CPU是酷睿EHz 4G内存 华硕gtx660Ti显卡 配置应该没问题&&
Unhandled exception
---------------------------
Exception code: 0xc0000005
Address: 0x01E97BB4 in trine3_32bit.exe:01E97000
Related modules: ntdll.dll trine3_32bit.exe kernel32.dll
Cannot create minidump: MinidumpWriteDump failed with code 0x0
Press CTRL+C to copy this message中文翻译过来是
未处理的异常
---------------------------
0xc0000005异常代码:
地址:0x01e97bb4在trine3_32bit:01e97000 EXE。
相关模块:ntdll.dll trine3_32bit.exe Kernel32.dll
无法创建转储:minidumpwritedump失败代码0x0
按Ctrl + C复制这个信息
我的系统WIN7 32位 旗舰版
可爱的小花猪
夏磊游侠元勋版主『动作/射击游戏区』侠盗联盟组【组长】永远萌系会员·小花猪·夏磊Assassin·真神之语·玛利亚
UID449654主题阅读权限150帖子精华0积分100434金钱80249 荣誉775 人气14964 在线时间65535 小时评议38
帖子精华0积分100434金钱80249 荣誉775 人气14964 评议38
虚拟内存设置的高点看看。
游戏运行库工具:http://www.ali213.net/zhuanti/yxk/
UID8147931主题阅读权限20帖子精华0积分5金钱60 荣誉0 人气0 在线时间23 小时评议0
Lv.2游侠会员, 积分 5, 距离下一级还需 195 积分
帖子精华0积分5金钱60 荣誉0 人气0 评议0
xialei_026 发表于
虚拟内存设置的高点看看。
虚拟内存已经设置到最大了 还是读进度条弹出 但是没有弹出对话框&&就是直接关闭的 大神有解决办法吗?急急急啊啊 谢谢
喜欢做梦的喵至尊江湖工作组【测试】
UID8038263主题阅读权限100帖子精华0积分1850金钱11283 荣誉23 人气341 在线时间3433 小时评议3
帖子精华0积分1850金钱11283 荣誉23 人气341 评议3
DirectX 9.0c End-User Runtime
网上找下这个下载试试
UID8147931主题阅读权限20帖子精华0积分5金钱60 荣誉0 人气0 在线时间23 小时评议0
Lv.2游侠会员, 积分 5, 距离下一级还需 195 积分
帖子精华0积分5金钱60 荣誉0 人气0 评议0
<font color="#7162719 发表于
DirectX 9.0c End-User Runtime
网上找下这个下载试试
下载完了 装了&&进入游戏 读进度条还是直接弹出 没有提示
喜欢做梦的喵至尊江湖工作组【测试】
UID8038263主题阅读权限100帖子精华0积分1850金钱11283 荣誉23 人气341 在线时间3433 小时评议3
帖子精华0积分1850金钱11283 荣誉23 人气341 评议3
这个错误代码是内存读写错误。
原因是你安装的软件自身有缺陷或者是安装软件的时候内存读写错误。
做法就是你将最近新安装的软件卸载了,然后断掉网络还有其他一切程序的运行,比如关闭音乐、关闭正在播放的播放器。反正什么都关了,然后再装软件。如果还出现这个情况,那么就是软件自身的缺陷了。
UID5849778主题阅读权限10帖子精华0积分3金钱70 荣誉0 人气0 在线时间4 小时评议0
Lv.1游侠新人, 积分 3, 距离下一级还需 2 积分
帖子精华0积分3金钱70 荣誉0 人气0 评议0
我也是这样,呵呵,只是安了CC+2013后就没有错误提示直接弹出说游戏停止了
游侠元勋版主
任职满72个月
元老版主勋章
任职满36个月
任职满12个月
资深版主勋章
任职满24个月
大头像勋章
永久勋章,统一售价:8888金币。购买地址:待定
白金会员勋章
用户积分达到6000
发帖数达到10000
荣誉达到150
特色头衔勋章
版区活动头衔达到三个
高级荣誉勋章
荣誉达到500
人气勋章·初级
人气值达到3000
版主评议达到4,勤于处理版务
2013年度杰出版主勋章
2013年度杰出版主勋章
2014年杰出版主勋章
2014年杰出版主勋章
Powered by这个配置 玩生化5 进去一直很流畅 一直到开始游戏 读取进度条的时候 出现ERR08:memory_百度知道
这个配置 玩生化5 进去一直很流畅 一直到开始游戏 读取进度条的时候 出现ERR08:memory
com/zhidao/wh%3D600%2C800/sign=b00c7b5bba72dbcfbb051f.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http这个配置可以玩的话./zhidao/pic/item/4b90fbb051f://g;-<a href="http.jpg" esrc="什么释放缓存神马的-&nbsp.hiphotos.baidu.hiphotos://g.baidu://g,那应该怎么解决问题&/zhidao/wh%3D450%2C600/sign=a4c510fae91ea1eb90fbb051f
为您推荐:
进度条的相关知识
其他2条回答
9800GTX,建议升级显卡显卡不给力,玩起肯定要悲剧,如GT240
可以了 玩吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 用手机玩大型游戏 的文章

 

随机推荐