Unity3D写雷电游戏(二)

摘要:
通过对上一篇文章中的材料的研究,现在假设您可以熟练地操作unity3D。我也是Unity3D的初学者。这是我游戏制作过程的记录。我希望这对其他人有帮助。欢迎大家一起讨论。如果您知道设计模式中的State模式,您会发现它与此类似。要连接到Unity3D的节点的脚本必须继承MonoBehavior。国家是所有国家的母体,主要有三种功能。Init()用于初始化此状态,Update用于更新场景,Exit()用于在离开当前状态时执行一些操作,例如隐藏当前接口。

通过上一篇那些资料的学习,现在假定你能比较熟练的操作unity3D了。

本人也是Unity3D的初学者,这边记录一下我的游戏制作经过,希望对别人有所帮助吧,欢迎大家一起讨论。

一、搭建游戏的框架。

一般的游戏都可以分为四个场景:

1.开始界面

2.游戏场景

3.暂停界面

4.结束界面

开始界面,就是存放开始菜单的地方了,游戏场景就是游戏的主场景,游戏的主要元素都在这边体现,暂停和结束画面我就不多说了。更多的还有在开始和主游戏场景之间加入过场动画等等。当然你也可以在暂停界面中插入广告:)

我们会发现这几个场景之间其实就是切换来切换去的关系。如果知道设计模式中的State模式,就会发现跟这个很象。可以通过State模式来实现这几个场景的分离,然后分边为他们添加不同的元素。

Unity3D写雷电游戏(二)第1张

想要挂接在Unity3D中的结点的脚本都得继承MonoBehaviour,State就是所有的状态的父类了,主要是三个函数,Init()用于这个状态的初始化,Update用于场景的更新,Exit()用于当离开当前状态时所进行的一些操作,比如隐藏当前界面等。

创建一个空的Object用来挂接我们游戏的主脚本,代码如下:

using UnityEngine;
using System.Collections;

public class Main_Script : MonoBehaviour {

public State m_CurState;

public void ChangeState(State newState)
{
m_CurState.Exit();
m_CurState = newState;
m_CurState.Init();
}

// Use this for initialization
void Start () {
m_CurState.Init();
}

// Update is called once per frame
void Update ()
{
m_CurState.Update();
}
}

这样我们就可以轻松的在不同的状态中切换了。想要增加一个新的状态,就只需继承State类,然后在其中写这个状态所要的元素,在适当的地方ChangeState一下就好了。

脚本的层次结构如下:

Unity3D写雷电游戏(二)第2张

例如我在按钮按下时切换到开始场景:

using System.Collections;

public class BeginGame : MonoBehaviour {

public StateRun m_RunState;
public Main_Script m_MainScript;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}

void OnMouseEnter()
{
print("enter");
}

void OnMouseUp()
{
m_MainScript.ChangeState(m_RunState);
}

void OnMouseExit()
{
print("exit");
}
}


这个脚本是挂在一个板上面的,点击它时就进入游戏的主场景了。下回说一下飞机的移动。

免责声明:文章转载自《Unity3D写雷电游戏(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇GCC 中的编译器堆栈保护技术(转)分享公司Entity与DTO之间数据拷贝的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity3D 创建一个简单的2D游戏

开始研究Unity3d 中的2D游戏。 首先创建出一个项目: 然后创建出一个场景: 然后添加一个背景: 然后创建一个主人公对象: 可以是自己做的素材,也可以是用unity裁剪的素材, 下面贴出裁剪素材的步奏 然会对图像进行裁剪,裁剪后进行保存: 有这样符号的就是裁剪后的素材: 然后将素材添加到游戏场景中(也就是拖到视图就可以了,如果是后期做碰撞...

Unity3D教程宝典之Shader篇

教程目录基础讲:Shader学习方法基础讲:基础知识特别讲:常见问题解答特别讲:CG函数第一讲: Shader总篇第二讲: Fixed Function Shader 第三讲: Vertex&Fragment Shader基础 第四讲: 制作一个美丽的地球第五讲:LOGO闪光效果 第六讲:TexGen第七讲:流程图第八讲:Why CG?第九讲:R...

C# 动态编译

1.C#层:利用.NET framework的CodeDom或Mono的Evaluator动态编译解释CS脚本 2.IL层:利用System.Reflection.Emit或Mono.Cecil动态生成IL指令并执行 3.造轮子自己实现IL解释器(取代.NET或Mono的IL解释器,这种方案可以绕过苹果实现热更新) 4.直接调用Mono的编译器进行编译生成...

Unity3D根据游戏的发展Terrain Toolkit地形生产

 今天我们继续给我Unity3D游戏开发系列。今天我们来通过Terrain Toolkit为了使地形。 虽然Unity3D它为我们提供了一个地形渲染工具,我们发现,这个地形绘制工具并不能满足我们的要求,由于通过手动绘制这样的方法来画地形的起伏缺少了自然的侵蚀感,人力雕琢的感觉过于强烈,毕竟通过人去感觉自然界地形的起伏变化是力不从心的。所以我们建议通过...

unity3D 重新加载场景时重置时间从0开始

void Update() { //.ToString()以两位数显示累加的时间//此方法可在重新加载场景时,重新计算时间 LastTime.text = Time.timeSinceLevelLoad.ToString("00"); }...

unity3D导出exe文件,总是有个设置窗口,来设置分辨率和其他参数。如何删除掉这一步?

其实很简单!点开unity3D主界面左上角按钮Edit按钮里Project setting 下 player 选项,在Inspec视图下调节Resolution  and presentation 里的 display Resolution Dialog 状态  选择Disabled。...