1.在scene文件夹中([siːn]),右键->create->scene,名字叫SelectMenu(选择角色场景)。
2.把新建场景拖拽到hierarchy[ˈhaɪərɑːki]中。
3.此时才能在file->build setting中Add open scene,这三步的顺序不能颠倒。右边 0 1的编号是可以相互拖拽交换的。
4.想要完成跳转需要用到一个全新的函数BroadcastMessage。定义写的清楚,可以直接远程调用mono继承类中的函数,后面的1是loading函数的参数。 学到下边AsyncOperation时,就发现加载过程是有必要重新新建一个脚本的。
还可能用到StartCoroutine(协作)函数,也是用来调用其他函数的。一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。协同程序在对象自有帧执行过程中堪称优秀。协同程序在性能上没有更多的开销。StartCoroutine函数是立刻返回的,但是yield可以延迟结果。直到协同程序执行完毕。很好理解的yield执行完以后,程序才继续向下执行。这个我的程序中明显是需要的,作用其实就是把登录代码卡住。执行函数的返回值是IEnumerator类型的。
在MessagerManager中新定义一个变量 async
AsyncOperation 是 Unity 引擎中的一个类,在异步操作过程中使用,例如加载资源和场景等。一个 AsyncOperation 实例代表一个正在进行的异步操作,并且可以查询该异步操作的状态和进度。通过查询该类的属性(如 isDone 和 progress),可以了解异步操作的状态,以及跟踪它的进度。此外,您还可以为异步操作设置回调函数,以便在操作完成时得到通知。
此时把ResceneScript.cs粘到Scripts文件夹中。粘入之后没有警告,此时loginHandler中对应功能的代码如下:文章来源:https://www.toymoban.com/news/detail-835166.html
case LoginProtocol.LOGIN_SRES://1
{
Debug.Log("成功登录,要进行场景跳转了");
//继承一些信息,来自loginhadler里面的,有原代码很省事的--把message对住就没问题了
StringDTO dto = Coding<StringDTO>.decode(model.message);//基本就完全等于是我自己写的
Debug.Log("dto.value:"+ dto.value);
if (dto.value == null || dto.value == string.Empty)//登录如果失败啥都不做就可以了
{
Debug.Log("登陆失败!");
//顺便修改一下对应文字即可
TMP_Text c = GameObject.FindWithTag("logText").GetComponent<TMP_Text>(); ;//得到两个Text对象
c.text = "登录失败";
}
else
{
TMP_Text d = GameObject.FindWithTag("logText").GetComponent<TMP_Text>(); ;//得到两个Text对象
d.text = "登录成功";
Debug.Log("成功登录,要进行场景跳转了");
GameInfo.ACC_ID = dto.value;//静态类起到全局效果
GameInfo.GAME_STATE = GameState.LOADING;
BroadcastMessage("Loading", 1);//到时候肯定有收的,这个才是游戏真正的消息机制--暂时还用不到
//GameInfo.GAME_STATE = GameState.LOADING;//加载状态其实我也用不到
//StartCoroutine("load",1);//调用一个写作函数--作用其实就是把登录代码卡住。
Debug.Log("等待下一次挑战");
}
break;
}
BroadcastMessage("Loading", 1);理论上就进入ResceneScript.cs了。文章来源地址https://www.toymoban.com/news/detail-835166.html
到了这里,关于unity学习(30)——跳转到角色选择界面(跳转新场景)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!