Unity程序协同问题,传送时屏幕变黑变亮的解决,常规操作的行为集合
在unity中运行某段程序时往往需要运行另外一段不相干但是却对功能上有需求的程序,比如进行场景传送,在传送点处,点击I键,屏幕慢慢变黑,场景传送到另外一个场景,场景又慢慢变亮。这里首先涉及两个物体,一个是传送触发器物体,点击I键,过一段时间后进行场景传送,另外一个就是遮罩物体,这里使用UGUI中的Panel,变黑和变亮主要修改它的透明度。达成上诉效果可以使用到以下几种方式:一,将panel物体作为触发器物体的参数物体,触发其物体执行panel中的代码,或者直接对panel物体进行操作。二,消息传送,触发器物体将点击I后的状态值保存在某个类的static值中,然后panel物体根据static的值做出相应的操作。
很明显在上面两个问题中,第一个很容易造成程序依赖性过强,程序结构臃肿,相对的第二个用于功能不相干的程序协作是最好的选择,下面是代码:
消息存储代码:
public class SceneControl : MonoBehaviour {
[SerializeField]
public static int state;//0正常,1改变场景,2交互
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
场景切换的触发器代码:
public class StreetChanger : MonoBehaviour {
public string sceneName;//需要切换的场景名称
public float transTime;切换场景需要的时间,有需要也可以将其初始值存于消息代码的static值里面
// Update is called once per frame
void Update () {
if (SceneControl.state == 1) {
transTime -= Time.deltaTime;
if (transTime <= 0) SceneManager.LoadScene(sceneName);
}
}
private void OnTriggerStay2D(Collider2D collision)
{
if(collision.gameObject.tag.Equals("Player")&&Input.GetKeyDown(KeyCode.I))//当有按键按下时改变state的值
SceneControl.state = 1;
}
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
场景变色的效果代码:
public class SceneExChangeEffect : MonoBehaviour {
Image image;
public Color black;
public Color white;
[Range(1,8)]
public float smooth;
// Use this for initialization
void Start () {
image = GetComponent<Image>();
image.color = black;
}
// Update is called once per frame
void Update () {
//柑橘state的值做出相应的操作
if (SceneControl.state == 0)
{
image.color = Color.Lerp(image.color, white, Time.deltaTime*smooth);
}
else {
image.color = Color.Lerp(image.color, black, Time.deltaTime*smooth);
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
消息初始化和一般功能程序:
在场景中有时需要反复用到一些单一功能的程序,比如UI按钮按下时的一些操作,比如场景切换,物体显示或者隐藏等,可以将这些程序存储到一个功能类下
public class GeneralControl : MonoBehaviour {
private void Awake()
{
SceneControl.state = 0;//初始化消息值
}
隐藏物体
public void HideGameObject(GameObject gameObject)
{
if (gameObject.activeSelf) gameObject.SetActive(false);
}
显示物体
public void ShowGameObject(GameObject gameObject)
{
if (!gameObject.activeSelf) gameObject.SetActive(true);
}
加载场景
public void LoadScene(string sceneName)
{
SceneManager.LoadScene(sceneName);
}
程序退出
public void ApplicationQuit()
{
Application.Quit();
}
}
Unity程序协同问题,传送时屏幕变黑变亮的解决,常规操作的行为集合的更多相关文章
- ios常见细节问题-删掉main.storyboard程序启动屏幕变黑-崩溃
删掉程序默认的main.storyboard文件后,程序启动崩溃 如图所示.原因是删掉main.storyboard文件后没有在info.plist文件里面设置 删掉main.storyboard后程 ...
- 解决使用BottomSheetDialog时状态栏变黑的问题
问题描述 当使用support里的design 库里的BottomSheetDialog时,在6.0的机器上当对话框弹出时系统状态栏会变黑,如下图所示: 一开始以为是我用的姿势不对,试过对style配 ...
- 像素迷踪,当Unity的Frame Debugger力不从心时
http://www.manew.com/thread-92382-1-1.html 从版本5开始,Unity包含了一个全新的可视化帧调试工具,Frame Debugger.该工具能帮你解决很多图形方 ...
- Android中Activity运行时屏幕方向与显示方式详解
现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...
- 重新想象 Windows 8 Store Apps (69) - 其它: 自定义启动屏幕, 程序的运行位置, 保持屏幕的点亮状态, MessageDialog, PopupMenu
[源码下载] 重新想象 Windows 8 Store Apps (69) - 其它: 自定义启动屏幕, 程序的运行位置, 保持屏幕的点亮状态, MessageDialog, PopupMenu 作者 ...
- [微信小程序]在应用地图时,如何设置满屏(高度)
微信小程序在做地图功能时 用常规的办法height:100%:来设置高度来占满屏幕是不行的 它不会生效 应该改用单位vh 例如 height:100vh 这样就可以是地图占满整个屏幕高度
- 转 UIAlertView 不显示、屏幕变灰
UIAlertView 不显示.屏幕变灰 SvenFang 票 在 [[NSNotificationCenter defaultCenter] addObserver:self selector:@s ...
- 如何降低Unity程序的Drawcall
[如何降低Unity程序的Drawcall] Unity can combine a number of objects at runtime and draws them together with ...
- 6.bootstrap 将文本内容关联一个动作(手机端导航适配)&在超小尺寸下显示,屏幕变大后消失
1.情景:这是出现在手机端导航适配的,点击文本MENU可以出现下拉的list 解决方法: 1.首先要想到,MENU只有两个状态,因此可以用checkbox实现 2.将MENU放在label标签里面,l ...
随机推荐
- 49_分析代理类的作用与原理及AOP概念
生活中的代理 武汉人从武汉的代理商手中买联想电脑和直接跑到北京传智播客旁边来找联想总部买电脑,你觉得最终的主体业务目标有什么区别吗?基本上一样吧,都解决了核心问题,但是,一点区别都没有吗?从代理商那里 ...
- plupload 大文件分片上传与PHP分片合并探索
最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...
- Android Handler 内存泄漏,文末消息机制的小总结
1. 内存泄漏的Activity public class MainActivity extends AppCompatActivity { private static final int MESS ...
- 【Alpha 冲刺】 1/12
1. 任务明细及任务量 Alpha版本任务安排(非固化版本,视情况调整,若有遗漏,及时补充) 职务 姓名 预期负责的模块页面 模块页面/任务明细 难度系数(0~1)(根据UI/功能实现难度划分) 预计 ...
- 【Ansible 文档】【译文】入门教程
http://docs.ansible.com/ansible/latest/intro_getting_started.html Foreword 前言 到这里,你应该已经安装了Ansible,是时 ...
- 主机ping不通virtualbox虚拟机的解决办法
虚拟机与主机之间相互ping通有一个问题,就是虚拟机能够ping通主机 本地主机ping不通虚拟机: 解决办法: 1)如果虚拟机有两个网卡: 将虚拟机网卡2的连接方式改成桥接即可: ⚠️要将虚拟机重启 ...
- 竟然是它:# vi /etc/resolv.conf
有数据库主机: 前端tomcat应用连接慢,开发人员本地pl/sql连接也超慢: 检查了系统i/o ,nethogs,top,检查了数据listener.ora,awr,wait_event,sql ...
- python下载安装搭建
python官网下载python运行环境(https://www.python.org/downloads/),建议下载稳定版本,不推荐使用最新版本 安装 然后我们打开CMD,在里面输入python, ...
- Android使用AsyncTask设置请求超时的注意事项
备注:该篇文章为原创,转载请声明地址,谢谢! /** * AsyncTaskTools2集成了AsyncTask类 * 前三个参数为回到函数,最后一个为全局的Context */ final Asyn ...
- js 自己项目中几种打开或弹出页面的方法
自己项目中,几种打开或弹出页面的方法(部分需要特定环境下) var blnTop = false;//是否在顶层显示 ///动态生成模态窗体(通过字符串生成) ///strModalId:模态窗体ID ...