【游戏开发实战】使用Unity 2019制作仿微信小游戏飞机大战(一):开始游戏界面

零、教程目录

使用Unity 2019制作仿微信小游戏飞机大战教程已完结。
文章目录如下:
《第一篇:开始游戏界面》
《第二篇:搭建基础游戏框架》
《第三篇:战斗界面UI》
《第四篇:主角飞机序列帧动画》
《第五篇:主角飞机的飞行控制》
《第六篇:根据配置随机生成敌机》
《第七篇:主角飞机碰撞与爆炸》
《第八篇:主角飞机开炮》
《第九篇:敌机受击与爆炸》
《第十篇:敌机血量与得分》
《第十一篇:核弹掉落与全屏炸机》
《第十二篇:敌机开炮》
《第十三篇:游戏暂停、结束与重新开始》

一、前言

嗨,大家好,我是新发。相信很多人玩过微信小游戏经典的飞机大战,如下:
在这里插入图片描述
想重温或体验微信这款经典的飞机大战的同学可以点这里:https://gamemaker.weixin.qq.com/ide#/
在这里插入图片描述

在网上已经有一些人已经出了Unity的制作教程,但是比较陈旧,里面使用了已经弃用的组件和写法,用了很陈旧的NGUI版本,如果使用Unity 2019或以上版本打开会各种报错,对新入门Unity的同学不大友好。

于是,我决定写一个全新的教程:《使用Unity2019制作仿微信小游戏飞机大战》,会使用最新的写法,并且使用尽量简洁的设计与代码来完成。

本教程的工程已上传到Github,感兴趣的同学自行下载学习。
喜欢的同学记得给个星星~
Github地址:https://github.com/linxinfa/UnityAircraftFight
在这里插入图片描述
Unity游戏开发有任何问题的,都欢迎在评论区留言,我都会看到的,并会进行认真解答,希望能帮助到想学Unity开发的同学,共勉。

二、本篇目标

开始游戏界面的制作。
本篇的效果:
在这里插入图片描述

三、创建Unity工程

由于我们要做的飞机大战是一个2D游戏,所以我们创建Unity工程时,选择2D模板。
项目名称叫UnityAircraftFight吧,点击创建。
在这里插入图片描述
创建成功。
在这里插入图片描述

四、导入图片资源

为了方便管理图片资源,工程中新建一个文件夹:RawAssets/Textures
将图片资源导入到Unity中。
请添加图片描述
请添加图片描述
在这里插入图片描述
如下:
在这里插入图片描述

五、循环背景图

循环背景图的简单做法就是在移动背景图的过程中交替复用两张背景图。

不过我觉得更科学的做法是利用UV平移,这里我就讲下UV平移的实现方式吧。

Unity 2018版本推出了ShaderGraph,可以很方便地通过可视化操作创建和制作自己想要的shader效果,感兴趣的同学可以看我之前写的这篇文章:《ShaderGraph使用教程与各种特效案例:Unity2020》,这里我就不用ShaderGraph了,直接用shader代码来实现UV平移。

1、shader平移UV

首先创建一个Shaders文件夹,
在这里插入图片描述
右键点击菜单 Create - Shader - Unlit Shader,创建一个shader脚本。
在这里插入图片描述
重命名为MoveUV
在这里插入图片描述
shader代码如下:

Shader "Unlit/MoveUV"
{
    Properties
    {
        _MainTex("MainTex", 2D) = "white" {}    // 纹理    
        _SpeedV("SpeedV",Float) = 0.3   // 滚动速度
    }
    
    SubShader
    {
        Tags{ "RenderType" = "Opaque" "Queue" = "Geometry" }
        LOD 100

        Pass
        {
            Tags{ "LightMode" = "ForwardBase" }
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag


            #include "UnityCG.cginc"

            struct a2v
            {
                float4 vertex : POSITION;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f
            {
                float4 pos : SV_POSITION;
                float2 uv : TEXCOORD0;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST; 
            float _SpeedV; 

            v2f vert(a2v v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex) + frac(float2 (0.0, _SpeedV) * _Time.y); 
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 c = tex2D(_MainTex, i.uv.xy); 
                return c;
            }
            ENDCG
        }
    }
    FallBack "VertexLit"
}

2、材质球

创建一个材质球,重命名为bg
在这里插入图片描述
设置shader为我们刚刚创建的MoveUV,并赋值主贴图为背景图。
在这里插入图片描述
我们可以调节材质球的SpeedV来调整UV移动的速度。
在这里插入图片描述

3、贴图设置为Repeat模式

将背景图的Wrap Mode设置为Repeat
在这里插入图片描述

4、使用SpriteRenderer显示背景图

在场景中创建一个空物体,重名名为background,并添加SpriteRenderer组件,赋值Sprite为背景图,赋值材质球为bg
在这里插入图片描述

5、运行测试

运行Unity,可以看到背景图滚动起来了,实现了我们要的无限循环效果。
在这里插入图片描述

六、开始游戏UI

1、UI摄像机

为了方便让UI显示在最顶层,我们专门创建一个UI摄像机。在Hierarchy窗口中右键点击菜单Camera
在这里插入图片描述
创建出一个摄像机,重命名为UICamera
在这里插入图片描述
设置一下UICamera的参数,如下:
(记得把UICameraAudioListener组件移除掉,否则会与Main CameraAudioListener重复)
在这里插入图片描述

由于UICamera已经渲染了UI层的对象,所以MainCamera就不要渲染UI层了,把MainCameraCulling MaskUI层勾选去掉。
在这里插入图片描述

2、Canvas

UI对象都需要挂在Canvas(画布)的子节点下。所以我们先创建一个Canvas
在这里插入图片描述
设置一下Canvas的参数,如下:
在这里插入图片描述

3、制作UI界面预设

如下,制作开始游戏界面预设StartGamePanel,并将预设保存到Resources/Panels文件夹中。
在这里插入图片描述

运行Unity测试效果如下:
在这里插入图片描述

七、下篇预告

下一篇,将讲基础游戏框架的搭建。

  • 16
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值