unity程序协同问题,传送时屏幕变黑变亮的解决,常规操作的行为集合

xiaoahui xiaoahui     2023-02-04     752

关键词:

在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();




















































Android 上的 Flex:弹出软键盘时应用程序屏幕变黑

】Android上的Flex:弹出软键盘时应用程序屏幕变黑【英文标题】:FlexonAndroid:Appscreengoesblackwhenthesoftkeyboardpopsup【发布时间】:2015-04-0113:19:42【问题描述】:我的Android平板电脑(SamsungNote10.1)的Flex应用程序中有一个奇怪的随机问... 查看详情

OpenGL着色器程序在使用时导致屏幕变黑

】OpenGL着色器程序在使用时导致屏幕变黑【英文标题】:OpenGLShaderProgramcausingscreentogoblackwhenused【发布时间】:2020-11-2218:25:14【问题描述】:所以在我的OpenGL代码中,每当我尝试在我的项目中使用着色器程序时,屏幕就会一直保... 查看详情

应用程序启动,设备屏幕有时会变黑

】应用程序启动,设备屏幕有时会变黑【英文标题】:Appstartsandthedevicescreengoesblacksometimes【发布时间】:2015-01-2707:38:26【问题描述】:这是一个非常奇怪的错误。我在iPhone设备上运行我的应用程序,但有时,当应用程序启动时,... 查看详情

切换系统菜单时的应用程序生命周期测试:onvisibilityChange:hidden 时屏幕变黑

】切换系统菜单时的应用程序生命周期测试:onvisibilityChange:hidden时屏幕变黑【英文标题】:Applicationlifecycletestwhentoggingsystemmenus:screengoesblackwhenonvisibilityChange:hidden【发布时间】:2018-12-2412:45:22【问题描述】:我正在钴11上集成youtu... 查看详情

注销和登录后屏幕变黑

...rLogoutandLoginScreenbecomesblack【发布时间】:2019-02-1405:47:13【问题描述】:我使用用户默认值来存储登录和注销信息,注销后当我再次登录时,UI更改,我尝试了不同的解决方案,但没有得到任何合适的解决方案。我尝试使用ifelse语... 查看详情

以编程方式设置初始控制器时屏幕变黑

...initialcontrollerprogrammatically【发布时间】:2019-11-0814:47:43【问题描述】:请你看看repohttps://github.com/Rukomoynikov/InitialViewControllerProgrammatically并帮助我。为什么我在尝试实例化ViewControl 查看详情

unity角色场景传送功能

传送触发器usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.SceneManagement;//玩家传送触发器及传送点publicclassStreetChanger:MonoBehaviourpublicstringsceneName;//传送的场景的名字publicfloattransTime;//传送等待的时间,比如在... 查看详情

IOS/Xcode:故事板屏幕变黑

...1016:11:27【问题描述】:我只是在学习Xcode。当您构建应用程序时,我做了一些导致导航栏下方的视图控制器变黑的事情。它在情节提要中看起来是白色的。此外,当我将标签拉到情节提要上时,它会与左边距对齐,并且不会显示... 查看详情

引导模式 - 屏幕变黑

...:Bootstrapmodal-screengoesblack【发布时间】:2015-09-0319:25:10【问题描述】:我有两个模态,它们在按钮单击时弹出。一个可以正常工作,但是对于第二个,屏幕只是变黑并且没有任何反应:首先,工作模式:<divid="deleteConfirmation"cla... 查看详情

segue后屏幕变黑

...】:Screengoesblackaftersegue【发布时间】:2020-01-2720:47:31【问题描述】:我尝试过调试,但无济于事。基本上,当我从第一个视图控制器切换到第二个视图控制器时,屏幕会暂时变黑。代码按我的意愿执行,但屏幕变黑对我来说有... 查看详情

当我使用 SendInput 发送鼠标光标位置时屏幕变黑

...ndInputtosendmousecursorpositions【发布时间】:2013-06-2608:57:59【问题描述】:我正在使用SendInput()发送鼠标的相对位置。首先告诉你在做什么。我用手指移动鼠标。因此,首先我在640x480图像中跟踪我的手指,并获取图像中的绝对位置(... 查看详情

UIPercentDrivenInteractiveTransition cancelTransition 使屏幕变黑

...ncancelTransitionturnsscreenblack【发布时间】:2013-10-1005:33:02【问题描述】:我正在实现自定义导航转换,并使用UIPercentDrivenInteractiveTransition来解决 查看详情

如何在可组合的屏幕中使用协同程序?

】如何在可组合的屏幕中使用协同程序?【英文标题】:Howtouseacoroutineinsideacomposablescreenwithflow?【发布时间】:2021-11-1003:55:52【问题描述】:我正在使用jetpackCompose和flow,但在尝试使用LaunchedEffect在可组合屏幕中获取数据时遇到... 查看详情

在 Flutter / Android 上防止启动屏幕变黑

...PNG图像的启动屏幕。在启动屏幕和正在显示的Flutter应用程序之间有一个非常明显的“变黑”。我不是说突然黑屏,而是启动屏幕真正淡出约50 查看详情

华硕顽石笔记本鼠标移动到桌面图标就变黑变模糊,右键也不显示文字,打开任何软件都没有文字是怎么回事?

...,重做操作系统。经过以上步骤,还不好,那就是硬件的问题了,建议找到官方维修部,请那里的师傅帮您检查一下吧。 参考技术B回答有两种方法:一、桌面主题更换成xp经典二、在“我的电脑”点击右键,选择“属性”里的... 查看详情

为啥在使用 FBO 进行多重采样时,OpenGL 会使我的场景变亮?

...OpenGL会使我的场景变亮?【发布时间】:2012-02-0123:23:12【问题描述】:我刚刚将我的OpenGL绘图代码从直接绘制到显示切换到使用附加了渲染缓冲区的屏幕外FBO。当我分配正常的渲染缓冲区存储时,屏幕 查看详情

unity带进度条加载场景及场变黑的解决方法(代码片段)

首先说加载场景显示进度条简单的来说需要协程+Update一直用UGUI,进度条就用Slider别忘了引用usingUnityEngine.UI;publicSliderslider;如果想在旁边显示个数字百分比,就再加个Text就好了publicTexttext;假设我们所在场景为old,要去往场景new,... 查看详情

切换场景灯光变黑问题解决

编辑器在当前场景时,它的灯光是已经渲染好了,但重新加载的时候灯光没有进行渲染解决方法如下:Window>>lighting>>Scene面板>>右下角build按钮前,取消勾选auto,这时候是没有烘焙灯光的情形,重新加载场景后不再... 查看详情