Unity3d 当游戏在统一中开始时,创造黑暗和光明效果

Unity3d 当游戏在统一中开始时,创造黑暗和光明效果,unity3d,Unity3d,我是unity的新手,我需要在游戏开始时创建一个效果: 当游戏开始时,游戏场景是黑暗的 当游戏已经开始时,游戏场景是轻的 请教我怎么做,非常感谢。首先,您必须在unity中的GameObject菜单中为场景添加灯光。如果需要打开或关闭该灯,只需将Javascript添加到灯中即可。有很多方法可以用谷歌搜索,而且很容易找到 var times : float; function Start () { light.intensity =0; } function Update () { tim

我是unity的新手,我需要在游戏开始时创建一个效果:

  • 当游戏开始时,游戏场景是黑暗的
  • 当游戏已经开始时,游戏场景是轻的

请教我怎么做,非常感谢。

首先,您必须在unity中的GameObject菜单中为场景添加灯光。如果需要打开或关闭该灯,只需将Javascript添加到灯中即可。有很多方法可以用谷歌搜索,而且很容易找到

var times : float;
function Start () {
light.intensity =0;
}

function Update () {
times += Time.deltaTime; // just I added time.
if (times > 5) // or Here you can use Press key events....
 light.intensity =8;
}

这是我用的。我创建了一个像素纹理,并使用GUI系统确保在场景中的所有内容之前绘制它。实际上,我使用显示管理器来控制GUI元素的绘制顺序,以确保覆盖在其他GUI元素之前

using UnityEngine;
using System.Collections;

public class Overlay : MonoBehaviour {

    //----------------------------------------------------------------------------------------------------//

    [SerializeField]
    private Color                                           screenColor         = Color.black;
    [SerializeField]
    private float                                           fadeSpeed           = 0.5f;

    //----------------------------------------------------------------------------------------------------//

    static private Texture2D                        overlay;
    static private bool                                 fadeOverlay;
    static private bool                                 fadeOverlayIn;

    //----------------------------------------------------------------------------------------------------//

    public void Awake() {
        //Setup the values for the fading overlay.
        overlay = new Texture2D( 1, 1 );
        overlay.SetPixel( 0, 0, screenColor );
        overlay.Apply();
        fadeOverlay = true;
        fadeOverlayIn = false;
    }

    public void Update() {
        if ( fadeOverlay ) {
            if ( fadeOverlayIn ) {
                screenColor.a += Time.deltaTime * fadeSpeed;
                if ( screenColor.a >= 1 ) {
                    fadeOverlay = false;
                }
            } else {
                screenColor.a -= Time.deltaTime * fadeSpeed;
                if ( screenColor.a <= 0 ) {
                    fadeOverlay = false;
                }
            }
            overlay.SetPixel( 0, 0, screenColor );
            overlay.Apply();
        }
    }

    public void OnGUI() {
        if ( fadeOverlayIn || fadeOverlay ) {
            GUI.DrawTexture( Camera.main.pixelRect, overlay );
        }
    }

    static public void Toggle() {
        fadeOverlay = true;
        fadeOverlayIn = !fadeOverlayIn;
    }

    //----------------------------------------------------------------------------------------------------//

}
使用UnityEngine;
使用系统集合;
公共类覆盖:单一行为{
//----------------------------------------------------------------------------------------------------//
[序列化字段]
专用颜色screenColor=Color.black;
[序列化字段]
专用浮动法速度=0.5f;
//----------------------------------------------------------------------------------------------------//
静态私有纹理2d覆盖;
静态私有布尔法迪奥弗雷;
静态私有布尔法德奥弗雷因;
//----------------------------------------------------------------------------------------------------//
公共图书馆{
//设置淡入淡出覆盖的值。
叠加=新纹理2d(1,1);
叠加。设置像素(0,0,屏幕颜色);
overlay.Apply();
fadeOverlay=真;
fadeOverlayIn=假;
}
公共无效更新(){
如果(fadeOverlay){
如果(fadeOverlayIn){
screenColor.a+=Time.deltaTime*fadeSpeed;
如果(screenColor.a>=1){
fadeOverlay=假;
}
}否则{
screenColor.a-=Time.deltaTime*fadeSpeed;

如果(screenColor.a我的游戏是2d的,我不确定2d中的灯光是否有效,因为我添加了灯光,但场景的灯光没有改变。为此,您需要向精灵添加一种使用精灵漫反射着色器的材质。作为标准,精灵不支持照明,因为我们希望用户使用未照明的灯光,并使用烘焙到精灵de中的灯光自行签名。只需制作一个材质,将其指定给精灵,然后从材质中选择精灵漫反射着色器。检查此链接非常感谢您的帮助如果它提供了解决方案,请接受它作为答案。感谢您的分享。我正在尝试此操作。是否有此帮助?