• Unity3D写雷电游戏(二)


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

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

    一、搭建游戏的框架。

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

    1.开始界面

    2.游戏场景

    3.暂停界面

    4.结束界面

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

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

    想要挂接在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一下就好了。

    脚本的层次结构如下:

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

    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");
    }
    }


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

  • 相关阅读:
    2019 安装SSDT
    添加删除服务
    POWER BI 报表服务器搭建配置
    解决POWER BI权限控制问题
    asp.net core 发布后显示异常错误信息的方法
    Microsoft SQL Server 查询连接数和关闭连接数
    不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
    SQL Server在所有表中查找内容(在整个库搜索内容)
    IIS 在.NET MVC网站下创建多个子应用程序,子站访问根目录问题
    博客网址
  • 原文地址:https://www.cnblogs.com/gameprogram/p/2283608.html
Copyright © 2020-2023  润新知