关于我学习Unity时遇到的知识
- AR入门
- 如何实现一个简单的拼图游戏
- 开发过程中遇到的一些问题
AR入门
1、Vuforia环境搭建
博主的AR游戏是使用Vuforia做的,Vuforia组件在你安装Unity时应该是可选的,如果忘记选了,那就去Vuforia的网站上下载就可以了。
选第二个安装就可以了。
2、新建一个Unity项目
Template记得选3D就可以了。
3、做一些基本配置
- 按图中的步骤。因为我要开发的是手机上的AR游戏所以要更换平台到Android。把画横线的那个选项勾上。
- 然后建一个ARcamera
- 进行一些配置
- 点击Add License,会跳转到Vuforia的官网,需要你申请一个钥匙,这个是必不可少的,每个项目都有自己的钥匙,你可以把它当成唯一标识。
- 里面就有钥匙了,复制之后粘贴到框里面就可以了。
4、建识别物数据库
- 接下来我们要在Vuforia官网建立一个识别物数据库,这个数据库的作用就是我们AR游戏的核心了。
- 添加你要AR识别的照片即可,这里我们用纸牌梅花K来做识别物。
- Rating的意思就是被识别的图片的等级,最好都是五星级别,那意味着你的图片更容易被识别。
- 选中这个数据库,然后下载下来,双击打开它,导入到Unity的项目当中去。可以看到AR camera的databases属性发生变化,证明已经导入成功。
5、第一次识别
- 建一个Image
- 这个地方可以更换识别物。
- 在Image上面建一个立方体。
- 调整一下方块的大小,方向和位置
- 因为是要开发手机AR游戏,所以调整一下预览。根据自己的手机大小选择。
- 然后点击运行,看一下效果。成功!
6、第一个按钮脚本
- 先建一个文件夹专门存放脚本,然后create一个C#脚本,命名为Btn_Cube。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Btn_Cube : MonoBehaviour
{
public GameObject btn;//定义物体变量 btn
public GameObject cube;//定义物体变量 cube
// Start is called before the first frame update
void Start()
{
Button btn_cube = btn.GetComponent<Button>();//获取Button组件
btn_cube.onClick.AddListener(btnClick);//点击事件
}
void btnClick(){
cube.SetActive(false); //隐藏物体cube
}
// Update is called once per frame
void Update()
{
}
}
- 这个脚本作用就是,当我们点击这个按钮之后,使得方块Cube消失。
- 将脚本拖拽到Cube的属性里面,然后就会出现Btn和Cube两个物体变量,再把Cube方块拖拽到Cube物体变量,把Button拖拽到Btn变量上即可。
- 运行测试一下即可发现方块Cube上会多出来一个按钮,点击即可触发方块消失事件。
- 这只是其中一种方法来实现点击事件,更多的方法可以自行上网查询。
7、Unity中常用的API和变量类型
博主只是提一下自己在开发的时候遇到的感觉有用的知识,具体用法需要读者自行百度搜索。下面我以挂载在方块Cube下的脚本Btn_Cube为例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Btn_Cube : MonoBehaviour
{
public GameObject btn;
public GameObject cube;
// Start is called before the first frame update
void Start()
{
// API:GameObject.GetComponent<脚本>()。常用于获取UI组件信息并进行操作,Componet就是右侧栏里面所有的脚本
Button btn_cube = btn.GetComponent<Button>();
// API:Button.onClick.AddListener(点击事件)。按钮点击事件
btn_cube.onClick.AddListener(btnClick);
// Transform和GameObject是Unity中比较重要的两个变量类型,两者可以相互转换