【Unity3D实战】RPG黑暗之光Scene1:创建开始场景
【Unity3D实战】RPG黑暗之光1:创建开始场景
1、导入资地形、地貌资源,新建场景,导入地形、地貌prefab,设置相机位置,添加全局灯光。
2、设置鼠标指针图片:
Edit-->Project Setting-->Player-->Default Cursor(设置自己的鼠标图片)
3、给场景添加水面和天空盒子skybox:
添加水面:Import Package-->Water(Basic)-->Daylight Simple Water(拖入场景中,调整transform到适合的水平面)
添加天空盒子:
Main Camera-->Clear Flags(Skybox)-->Add Component(Skybox)
Import Package-->Skyboxes-->任选一个Sunny天空拖到Component的Skybox下
4、实现镜头缓慢拉近的效果:
public float speed = 10;
private float endZ = -20;
void Update ()
{
if (transform.position.z < endZ) //还没有达到目标位置,需要移动
{
transform.Translate( Vector3.forward*speed*Time.deltaTime);
}
}
5、给场景添加雾:
Edit-->Render Setting(设置Fog Density)
6、使用NGUI和白色背景给场景添加渐显效果:
导入NGUI插件资源和设计好的UI素材资源。
NGUI-->Open-->Prefab Toolbar拖到project视图旁,方便编辑。
拖一个BackGround到场景中去。
删掉原有的UI背景:把UI Root下的Control - Background删掉。
添加一个白色UI背景:RPG\GUI\Title\whitescreen。点选上UI Root,W键模式,右键Create一个Simple Texture,Aspect(Based On Width),Size(2000/Snap),修改名字为WhiteScreen。
添加Tween动画:选上WhiteScreen,右键Tween一个Alpha,参数From 1 To 0,Duration为2,Start Delay为1。
7、设计开始的界面,开始加载按钮和logo:
新建Atlas图集:NGUI-->Open-->Atlas Maker,名字为RPG Atlas。
添加Logo:UI Root右键Create一个Sprite,设置属性选择图集和Logo,Snap,调整位置。Color Tint Alpha值调为0。修改名字为Title。
添加Tween动画:选上Title,右键Tween一个Alpha,参数From 0 To 1,Duration为1,Start Delay为2(白色背景显示完之后)。
添加PressAnyKeyToStart:复制一份Title,Color Tint Alpha值还原为255。修改Sprite属性选择图片PressAny……。Aspect(Based On Width),Size(300/Snap),修改名字为PressAnyKeyToStart。Color Tint Alpha值修改为0。Tweener Play Style设置为Ping Pong
按下任意键之后,就切换到New Game或者Load Game的加载界面:
添加ButtonContainer:UI Root-->右键Create一个Invisible Widget,改名为ButtonContainer。右键Create-->Sprite-->Child,改名为ButtonNewGame。右键Attach-->Box Collider,右键Attach-->Button Script。设置Sprites的Hover为ButtonNewGame,Pressed为ButtonNewGameDown。Color全部设置为白色。同理添加LoadGameButton,不赘述。把ButtonContainer设置为默认隐藏,因为只有点击了AnyKey之后,才会显示这个界面。
8、处理任何按键按下的事件:
在PressAnyKeyToStart上添加一个脚本PressAnyKey.cs:
private bool isAnyKeyDown = false;//表示是否有任何按键按下
private GameObject buttonContainer;
void Start() {
buttonContainer = this.transform.parent.Find("buttonContainer").gameObject;
}
void Update () {
if (isAnyKeyDown == false) {
if (Input.anyKey) {
ShowButton();
}
}
}
void ShowButton() {
buttonContainer.SetActive(true);//显示buttonContainer的两个button
this.gameObject.SetActive(false);//隐藏PressAnyKeyToStart
isAnyKeyDown = true;
}
9、处理开始游戏和加载游戏按钮的按下:
在buttonContainer上添加一个脚本ButtonContainer.cs:
//开始新游戏
public void OnNewGame() {
PlayerPrefs.SetInt("DataFromSave", 0); //DataFromSave值为0表示数据来自新建角色
// 加载我们的选择角色的场景 2
Application.LoadLevel(1);
}
//加载已经保存的游戏
public void OnLoadGame() {
PlayerPrefs.SetInt("DataFromSave", 1); //DataFromSave值为1表示数据来自保存
//加载我们的play场景3
}
添加按钮处理:
ButtonNewGame-->On Click-->Notify(拖入buttonContainer)-->Method(ButtonContainer/OnNewGame)
ButtonLoadGame-->On Click-->Notify(拖入buttonContainer)-->Method(ButtonContainer/OnLoadGame)
10、给开始场景添加背景声音和按钮点击的声音:
导入声音资源。
背景音乐:Main Camera-->添加Audio Source-->RPG\Sounds\BGM-Ingame拖入到Audio Clip。勾选Loop循环播放,调节Volume音量
按钮点击声音:ButtonNewGame或ButtonLoadGame-->添加Play Sound-->RPG\Sounds\button拖入到Audio Clip即可。