一、前期准备
(一)安装Unity
1. 访问Unity官方网站(https://unity.com/),点击“Get started”下载Unity Hub。
2. 运行下载的安装程序,按照提示完成Unity Hub的安装。
3. 打开Unity Hub,在“Installs”选项卡中点击“Add”,选择需要安装的Unity版本及组件(建议勾选常用平台的构建支持,如Windows、Android等),开始安装Unity编辑器。
(二)准备资源
1. 美术资源:可在网上搜索免费的2D游戏素材,像Kenney.nl等网站提供大量公共领域素材,包含角色、平台、金币等。也能使用图形设计软件自制简单图形。
2. 音频资源:从FreeMusicArchive等网站获取免费音效和背景音乐,用于游戏的跳跃音效、收集金币音效等 。
二、创建项目
1. 打开Unity Hub,点击“New Project”。
2. 在弹出窗口中,项目模板选择“2D”,设置项目名称和存储位置,点击“Create”创建新的2D项目。
三、搭建游戏场景
(一)导入资源
1. 将下载或自制的美术和音频资源文件夹直接拖放到Unity项目的“Project”面板中。
2. 若导入的图片资源需作为2D精灵使用,选中图片,在“Inspector”面板中确保“Texture Type”设置为“Sprite (2D and UI)”。
(二)创建地面和平台
1. 在“Hierarchy”面板中右键点击,选择“2D Object” - “Tilemap” - “Tilemap”,创建一个Tilemap对象,用于绘制地面和平台。
2. 在“Project”面板中找到用于地面和平台的精灵素材,将其拖到“Tile Palette”面板中创建Tile。
3. 选中Tilemap对象,使用“Tile Palette”中的画笔工具,在“Scene”视图中绘制游戏场景的地面和平台。
(三)添加角色
1. 在“Hierarchy”面板中右键点击,选择“2D Object” - “Sprite”,创建一个新的精灵对象作为游戏角色。
2. 在“Project”面板中选择角色的精灵素材,拖到新创建的精灵对象上。
3. 调整角色的位置和大小,使其位于地面上方合适位置。
四、编写角色控制脚本
1. 在“Project”面板中右键点击,选择“Create” - “C# Script”,创建一个新的C#脚本,命名为“PlayerController”。
2. 双击打开脚本,编写以下代码:
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
public float jumpForce = 10f;
private Rigidbody2D rb;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
// 水平移动
float moveHorizontal = Input.GetAxis("Horizontal");
Vector2 movement = new Vector2(moveHorizontal, 0f);
rb.velocity = new Vector2(movement.x * speed, rb.velocity.y);
// 跳跃
if (Input.GetButtonDown("Jump") && isGrounded)
{
rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
isGrounded = false;
}
}
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
}
3. 将编写好的“PlayerController”脚本拖到“Hierarchy”面板中的角色对象上,完成角色控制功能的添加。
五、实现金币收集系统
(一)创建金币对象
1. 在“Hierarchy”面板中右键点击,选择“2D Object” - “Sprite”,创建一个新的精灵对象作为金币。
2. 选择金币的精灵素材,拖到新创建的精灵对象上,并调整其位置和大小。
3. 为金币对象添加“Circle Collider 2D”组件,用于碰撞检测。
(二)编写金币收集脚本
1. 创建一个新的C#脚本,命名为“CoinCollector”。
2. 编写以下代码:
using UnityEngine;
public class CoinCollector : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
// 播放收集金币音效
// 这里假设已经将音效资源导入并挂载在AudioSource组件上
// 可以根据实际情况修改音效播放逻辑
AudioSource audioSource = GetComponent<AudioSource>();
audioSource.Play();
Destroy(gameObject);
}
}
}
3. 将“CoinCollector”脚本拖到金币对象上,并为金币对象添加“Box Collider 2D”组件,设置为“Is Trigger”,使角色接触金币时触发收集事件。
六、添加用户界面(UI)
(一)显示金币数量
1. 在“Hierarchy”面板中右键点击,选择“UI” - “Text”,创建一个文本对象用于显示金币数量。
2. 在“Inspector”面板中调整文本的字体、大小、颜色和位置。
3. 创建一个新的C#脚本,命名为“CoinCounter”,用于更新金币数量的显示:
using UnityEngine;
using UnityEngine.UI;
public class CoinCounter : MonoBehaviour
{
public int coinCount = 0;
public Text coinText;
void Start()
{
UpdateCoinText();
}
public void IncreaseCoinCount()
{
coinCount++;
UpdateCoinText();
}
void UpdateCoinText()
{
coinText.text = "Coins: " + coinCount.ToString();
}
}
4. 将“CoinCounter”脚本拖到一个空的游戏对象上,在“Inspector”面板中,将创建的文本对象赋值给“Coin Text”字段。
5. 回到“CoinCollector”脚本,在“OnTriggerEnter2D”方法中添加增加金币数量的代码:
using UnityEngine;
public class CoinCollector : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
// 播放收集金币音效
AudioSource audioSource = GetComponent<AudioSource>();
audioSource.Play();
// 增加金币数量显示
CoinCounter coinCounter = FindObjectOfType<CoinCounter>();
if (coinCounter != null)
{
coinCounter.IncreaseCoinCount();
}
Destroy(gameObject);
}
}
}
(二)添加暂停功能
1. 在“Hierarchy”面板中右键点击,选择“UI” - “Button”,创建一个暂停按钮。
2. 在“Inspector”面板中调整按钮的大小、位置和文本显示。
3. 创建一个新的C#脚本,命名为“PauseMenu”,用于实现暂停功能:
using UnityEngine;
using UnityEngine.UI;
public class PauseMenu : MonoBehaviour
{
public GameObject pauseMenuUI;
private bool isPaused = false;
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isPaused)
{
Resume();
}
else
{
Pause();
}
}
}
public void Resume()
{
pauseMenuUI.SetActive(false);
Time.timeScale = 1f;
isPaused = false;
}
void Pause()
{
pauseMenuUI.SetActive(true);
Time.timeScale = 0f;
isPaused = true;
}
public void QuitGame()
{
Application.Quit();
}
}
4. 将“PauseMenu”脚本拖到一个空的游戏对象上,在“Inspector”面板中,将创建的暂停菜单UI对象赋值给“Pause Menu UI”字段。
5. 选中暂停按钮,在“On Click()”事件中,将挂载“PauseMenu”脚本的对象拖入,选择“PauseMenu.Pause”方法,使点击按钮时触发暂停功能。
七、构建与测试
1. 在Unity编辑器中,点击“File” - “Build Settings”。
2. 在“Build Settings”窗口中,选择目标平台(如Windows、Android等),点击“Build”按钮,选择存储路径,生成游戏安装包。
3. 运行生成的游戏安装包,测试游戏功能是否正常,包括角色移动、跳跃、金币收集、暂停功能等,检查是否存在漏洞或异常情况,如有问题返回Unity编辑器进行调试修改。