unity 3D游戏开场画面隐退实现

//////////////2015/07/07//////////

/////////////by xbw/////////////////

////////////环境 unity 4.6.1////

今天实现了游戏欢迎界面的制作,先上效果图,

想必大家都玩过游戏,经过一个欢迎界面后会进入游戏,这就是我们今天要实现的;

、、、、、

这个我把他新建了一个场景,可以不用新建场景,直接把代码挂载到主摄像机上,下面直接上代码吧;

用的Java语言;

welcome代码

var renderOverlay : DisplayTextureFullScreen;

function Start() {

    renderOverlay = GetComponent(DisplayTextureFullScreen);
    renderOverlay.setStartColor(Color.white);
    renderOverlay.setDelay(2.0);
}

function Update () {

    if (renderOverlay.GUIColor.a > 0) {
        renderOverlay.AlphaDown(Time.deltaTime);
    }
}

DisplayTextureFullScreen代码

var graphic = TextureGUI(); //(28,23);
var GUIColor:Color;

function OnGUI() {
    GUI.color = GUIColor;
    if (graphic.texture) {
        GUI.DrawTexture(Rect(graphic.offset.x,graphic.offset.y,
						Screen.width,Screen.height),
						graphic.texture,ScaleMode.StretchToFill,true);
    }
}

function AlphaUp(change:float) {
    GUIColor.a += change;
}

    function setStartColor(color:Color) {
        GUIColor = color;
    }

        function setDelay(delay:float) {
            if (GUIColor.a > .5) {
                GUIColor.a += delay;
            } else {
                GUIColor.a -= delay;
            }
        }

            function AlphaDown(change:float) {
                GUIColor.a -= change;
            }

这两个代码需要一个类库,

class类;

import System.Collections.Generic;

// TextureGUI Class: create a basic class for creating and placing GUI elements
// texture = the texture to display
// offset = pixel offset from top left corner, can be modified for easy positioning

class TextureGUI {
    var texture:Texture; //useful: texture.width, texture.height
    var offset:Vector2; // .x and .y
    private var originalOffset:Vector2; //store the original to correctly reset anchor point
	enum Point { TopLeft, TopRight, BottomLeft, BottomRight, Center} //what part of texture to position around?

    var anchorPoint = Point.TopLeft; // Unity default is from top left corner of texture

    function setAnchor() { // meant to be run ONCE at Start.
        originalOffset = offset;
        if (texture) { // check for null texture
            switch(anchorPoint) { //depending on where we want to center our offsets
                case anchorPoint.TopLeft: // Unity default, do nothing
                    break;
                case anchorPoint.TopRight: // Take the offset and go to the top right corner
                    offset.x = originalOffset.x - texture.width;
                    break;

                case anchorPoint.BottomLeft: // bottom left corner of texture
                    offset.y = originalOffset.y - texture.height;
                    break;

                case anchorPoint.BottomRight: //bottom right corner of texture
                    offset.x = originalOffset.x - texture.width;
                    offset.y = originalOffset.y - texture.height;
                    break;

                case anchorPoint.Center: //and the center of the texture (useful for screen center textures)
                    offset.x = originalOffset.x - texture.width/2;
                    offset.y = originalOffset.y - texture.height/2;
                    break;
            }
        }
    }
}

//Timer Class:

class TimerGUI extends TextureGUI { // Extend functionality from TextureGUI for a depreciating timer graphic
    var textureLEnd:Texture; // left side of full texture (non stretching part)
    var offsetLEnd:Vector2; // left side of full texture (non stretching part) start position
    var textureCenter:Texture; // center of timer (will be stretched across width)
    var offsetCenter:Vector2;
    var textureREnd:Texture;
    var offsetREnd:Vector2;
    var timerPerct:float = 1; // percentage (0 to 1) this stretches the center
    var desiredWidth:float = 403; // max width of the timer in pixels

    function setTime(newTime:float) {
        timerPerct = newTime; // sets the percent based on value
    }
    }

    // SwitchGUI Class: Extends the TextureGUI to be able to load in multiple textures and switch between them
class SwitchGUI extends TextureGUI {
    var switchableTextures = new List.<Texture>();
    var currentTexture:int = 0;
    function Start() {
        if (switchableTextures.Count > 0) {
            texture = switchableTextures[currentTexture];
        }
    }
    function changeTexture(switchTo:int) {
        if (switchTo < switchableTextures.Count && switchTo >= 0) {
            texture = switchableTextures[switchTo];
            currentTexture = switchTo;
        } else {
            //Debug.Log( this + ": tried to call invalid part of switchTextures array!");
        }
    }

        function up() {
            if ((currentTexture+1) < switchableTextures.Count) {
                ++currentTexture;
                texture = switchableTextures[currentTexture];
            } else {
                //Debug.Log( this + ": at the top!");
            }
        }

        function nextTexture() {
            if ((currentTexture+1) < switchableTextures.Count) { // if we are at the end of the array
                ++currentTexture;
                texture = switchableTextures[currentTexture];
            } else {// loop to the beginning
                currentTexture = 0;
                texture = switchableTextures[currentTexture];
            }
        }

        function down() {
            if ((currentTexture-1) >= 0) {
                --currentTexture;
                texture = switchableTextures[currentTexture];
            } else {
                //Debug.Log( this + ": at the bottom!");
            }
        }

    }

    // Location class: 

class Location {
	enum Point { TopLeft, TopRight, BottomLeft, BottomRight, Center}

    var pointLocation = Point.TopLeft;
    var offset:Vector2;

    function updateLocation() {
        switch(pointLocation) {
            case pointLocation.TopLeft:
                offset = Vector2(0,0);
                break;
            case pointLocation.TopRight:
                offset = Vector2(Screen.width,0);
                break;

            case pointLocation.BottomLeft:
                offset = Vector2(0,Screen.height);
                break;

            case pointLocation.BottomRight:
                offset = Vector2(Screen.width,Screen.height);
                break;

            case pointLocation.Center:
                offset = Vector2(Screen.width/2,Screen.height/2);
                break;
        }
    }
}

class TextureAnchor {
	enum Point { TopLeft, TopRight, BottomLeft, BottomRight, Center}

    var anchorPoint = Point.TopLeft;
    var offset:Vector2;

    function update() {
        switch(anchorPoint) {
            case anchorPoint.TopLeft:
                offset = Vector2(0,0);
                break;
            case anchorPoint.TopRight:
                offset = Vector2(Screen.width,0);
                break;

            case anchorPoint.BottomLeft:
                offset = Vector2(0,Screen.height);
                break;

            case anchorPoint.BottomRight:
                offset = Vector2(Screen.width,Screen.height);
                break;

            case anchorPoint.Center:
                offset = Vector2(Screen.width/2,Screen.height/2);
                break;
        }
    }
}

class类不需要挂载,两外两个代码挂载到主摄像机,

红色圈中为需要设置的贴图,即欢迎图片;;;,

试一下效果吧;;;

这是在同一个场景中的,我见了两个场景,这就需要场景转换了,

下节介绍,,欢迎同学互相学习交流,



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 02:45:51

unity 3D游戏开场画面隐退实现的相关文章

【Unity】1.0 第1章 Unity&mdash;3D游戏开发和虚拟现实应用开发的首选

分类:Unity.C#.VS2015 创建日期:2016-03-23 一.简介 Unity是跨平台2D.3D游戏和虚拟现实高级应用程序的专业开发引擎,是由Unity Technologies公司研制的一个让玩家轻松创建诸如虚拟现实场景再现.三维视频游戏.建筑设计可视化.实时三维动画展现等类型互动内容的多平台综合型开发工具,是一个全面整合的跨平台专业3D开发引擎. 全球超过70%的手机3D游戏都是用Unity来开发的. 1.能部署到20多个平台上 Unity类似于Director,Blender

Unity 3D游戏开发引擎:最火的插件推荐

摘要:为了帮助使用Unity引擎的开发者制作更完美的游戏,我们精心挑选了十款Unity相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJoystick.UnIDE.Tile Based Map and Nav.FX Maker.Toon shader.Top-Down Assets Mobile和83 Explosion Sound Effects. 作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升

unity 3D游戏场景转换

//////////////////2015/07/07//////// /////////////////by xbw/////////////// ///////////////环境 unity 4.6.1// 当需要多个场景时,就用到了场景转换, 这里呢,我有两个场景,一个move(开场镜头),另一个second(游戏场景): 要想运行完开长镜头后接着运行游戏场景,需要用到一个函数::: Application.LoadLevel("second");引号里变是需要运行的场景,即

【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例

一. 工作区域详解 1. Scence视图 (场景设计面板) scence视图简介 : 展示创建的游戏对象, 可以对所有的游戏对象进行 移动, 操作 和 放置; -- 示例 : 创建一个球体, 控制摄像机, 让球体在摄像机拍摄的视图中显示出来; (1) 摄像机导航 摄像机旋转(Tumble) : alt + 鼠标左键, 摄像机会按照鼠标滚动的垂直中线进行旋转, 可以查看摄像机当前的状态, 注意只是改变视图中的状态, 摄像机还是在视图正中央位置, 摄像机的位置属性是不变的; 摄像机移动(Track

Unity 3D游戏开发Mecanim动画系统讲解

本期教程和大家分享Mecanim动画系统的重定向特性,Mecanim动画系统是Unity3D推出的全新的动画系统,具有重定向.可融合等诸多新特性,通过和美工人员的紧密合作,可以帮助程序设计人员快速地设计出角色动画.一起跟着人气博主秦元培学习吧! 博主今天想和大家分享的是Mecanim动画系统的重定向特性,众所周知,<仙剑奇侠传>是一部经典的RPG游戏,这部游戏到今天依然焕发着强大的生命力.博主在网上认识了一个制作<仙剑奇侠传>同人游戏的小团队,他们目前正在着手制作一个称为<仙

unity 3D游戏开始界面GUI美化

////////////////2015/07/07//////////// ///////////////by xbw/////////////////// //////////////环境 unity 4.6.1////// 先上效果图 是不是很可爱,萌萌哒::: 话不多说,首先创建一个场景,,, 图片中的天空场景加了天空盒,,,说一下怎么添加天空盒吧,我不喜欢给主摄像机添加天空盒,不过这种方法也说一下,点击主摄像机,在inspector属性栏中添加成分,skybox,然后找到天空盒的素材,

Unity 3D使用GameObject创建一个简单的可移动物体

于Unity 3D游戏的开发.游戏脚本需要3D模拟组合,该脚本将被写入阻力3D为了达到效果对象. 以下是一个小实例,使用Unity 3D实现一个可控制移动的小人.小人能够向前.向后.向左和向右移动. 1.通过 File - > New Scene 创建一个场景: 2.点击Create -> Create Empty 创建一个GameObject,它即是游戏对象: 3.在Inspector 面板里将此对象的名字改为 "hero" (记得按回车键),等一下再脚本中将通过此名字来

Unity 3D入门简介

最近在刚开始学习Unity 3D,在这里记录一下学习心得和学习笔记,边学边写,可能会比较零散.好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料.以下如果不作特别说明,均是指Windows平台的Unity 3D,版本是4.5.1f3. Unity 3D是一款游戏开发引擎,目前支持2D和3D游戏的开发,其最大的优势就是跨平台性非常好,可以很容易的将PC端制作的游戏移植到Android.IOS等移动平台,当然也可以创建网页游戏.刚开始进行Unity 3

【Unity 3D】学习笔记三十二:游戏元素——游戏光源

游戏光源 在3D游戏中,光源是一个非常具有特色的游戏组件.用来提升游戏画面质感的.如果没有加入光源,游戏场景可能就会显得很昏暗.在unity中提供了三种不同的光源类型:点光源,聚光灯,平行光. 点光源 顾名思义,点光源是从一个点向周围散发出光的光源,就像电灯一样.创建点光源在hierarchy视图中点击create--point light: 创建完以后,点击点光源对象,在右侧inspector视图中可以看到点光源的所有信息: type:光源的类型.有point(点光源),directional