Unity3D——游戏开始与暂停
暂停:
using System . Collections ;
public class Script_Menu : MonoBehaviour {
public bool IsGamePaused ;
void Start ()
{
PauseGame ();
}
void Update ()
{
if ( Input . GetKey ( KeyCode . Escape ))
{
PauseGame ();
}
}
void OnGUI ()
{
if ( ! IsGamePaused )
return ;
///自动布局,按照区域
GUILayout . BeginArea ( new Rect (( Screen . width - 100 ) / 2 , ( Screen . height - 200 ) / 2 , 100 , 200 ));
///横向
GUILayout . BeginVertical ();
if ( IsGamePaused )
{
if ( GUILayout . Button ( "开始游戏" , GUILayout . Height ( 50 )))
{
StartGame ();
//enabled = false;
}
}
if ( GUILayout . Button ( "退出游戏" , GUILayout . Height ( 50 )))
{
//在Android上可以,IOS上没试
//Debug.Log("Exit");
Application . Quit ();
}
GUILayout . Button ( "关于游戏" , GUILayout . Height ( 50 ));
GUILayout . EndVertical ();
GUILayout . EndArea ();
}
void StartGame ()
{
IsGamePaused = false ;
Time . timeScale = 1 ;
//Debug.Log("Start Game" + Time.fixedTime);
}
void PauseGame ()
{
IsGamePaused = true ;
Time . timeScale = 0 ;
//Debug.Log("Pause Game");
}
}
一提到游戏暂停,很多人会想到 Time.timeScale = 0; 这种方法,但 Time.timeScale 只是能暂停部分东西。如果在 update 函数中持续改变一个物体的位置,这种位置改变貌似是不会受到暂停影响的。比如 transform.position = transform.position+transform.TransformDirection(Vector3(0,0,throwForce));
Time.timeScale = 0 的时候这个东西仍然在动。
CocoaChina 会员“123探花”的解决方法是:把使用Time.timeScale = 0; 功能的函数写在 FixedUpdate() , 当使用 Time.timeScale = 0 时项目中所有 FixedUpdate() 将不被调用,以及所有与时间有关的函数。 在 update 通过一个布尔值去控制暂停和恢复。
如果您设置 Time.timeScale 为 0,但你仍然需要做一些处理(也就是说动画暂停菜单的飞入),可以使用 Time.realtimeSinceStartup 不受 Time.timeScale 影响。
另外您也可以参考一下 Unity Answer 上提到的方法
要暂停游戏时,为所有对象调用 OnPauseGame 函数:
Object[] objects = FindObjectsOfType (typeof(GameObject));
foreach (GameObject go in objects) {
go.SendMessage ("OnPauseGame", SendMessageOptions.DontRequireReceiver);
}
从暂停状态恢复时,
A basic script with movement in the Update() could have something like this:
protected bool paused;
void OnPauseGame ()
{
paused = true;
}
void OnResumeGame ()
{
paused = false;
}
void Update ()
{
if (!paused) {
// do movement
}
}
Unity3D——游戏开始与暂停相关推荐
- 从一点儿不会开始——Unity3D游戏开发学习(一)
一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...
- Unity3D游戏开发-宣雨松读书摘要(2015-4-17 18:36)
本书基于Unity3.5编写,通过丰富的游戏实例,以JavaScript与C#两种语言介绍Unity开发. Unity3D游戏开发-宣雨松 序 它支持JavaScript.C#.Boo三种脚本语言 ...
- Unity3D游戏编程-鼠标打飞碟
Unity3D游戏编程-鼠标打飞碟 文章目录 Unity3D游戏编程-鼠标打飞碟 一.作业要求 二.项目配置 三.项目演示 视频演示 项目下载 文字说明 项目截图 四.前置内容 MVC模式 动作管理器 ...
- 《学Unity的猫》——第十八集:Unity3D游戏开发工程师笔试刷题,皮皮收到面试邀请
文章目录 18.1 皮皮收到面试邀请 18.2 面试题库相关网站 18.2.1 牛客网 18.2.2 领扣LintCode 18.2.3 力扣LeetCode 18.3 优质学习网站 18.3.1 菜 ...
- Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
Unity3D 游戏引擎之脚本实现模型的平移与旋转 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/ar ...
- Unity3D游戏-愤怒的小鸟游戏源码和教程(二)
Unity愤怒的小鸟游戏教程(二) 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) AngryEva游戏 ...
- android+Unity3D游戏开发之简单的物体运动
android+Unity3D游戏开发之简单的物体运动 其实这篇也是转载的,真的感觉对于我们初学者来说很不错的,不信你看看嘛;原创链接:http://bbs.9ria.com/thread-98192 ...
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289 ...
- Unity3D 游戏引擎之平面小球重力感应详解【转】
http://blog.csdn.net/xys289187120/article/details/6969333 手机重力感应应该对大多数开发者并不陌生,在新一代智能手机Android ...
最新文章
- .NET 中 Image 转 Icon
- iPhone 11 送一台!不爱可折现!
- Python02 标准输入输出、数据类型、变量、随记数的生成、turtle模块详解
- 为什么和平精英无响应_什么和为什么
- begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法
- java jna jni_JNA, Java Native开发利器
- [数据库]数据库三级加锁协议深入理解
- 软件设计师 - UML图
- anime studio的本质特性
- 启动项目的时候报驱动错误: not support oracle driver 1.0
- android 电池(三):android电池系统
- 天津联通集中备份系统应用
- 5.0在python中是一个整数常量_python学习之路,基础篇-变量和常量
- 【python】用PyQt5教你制作简单的水果抽奖机
- 如何共享扫描仪-Netscan
- 删除文件夹需要管理员权限的解决方法
- javase哪部分最难_JavaSe到底有多重要?
- 8.12 腾讯大战360 2133
- python背景色渐变_Python 生成纯色或渐变色图片
- 简单易懂的并查集算法以及并查集实战演练