准备

- 创建Scenes场景,Scripts脚本,Prefabs预制体文件夹
修改背景颜色
-
选中Main Camera

-
找到背景

-
选择颜色,一种白中透黄的颜色

创建小球
-
将文件夹里的Circle拖入层级里

-
选中Circle,位置为左右居中,偏上,颜色为黑色,大小缩为0.7


分数
-
创建Text

-
删除掉EventSystem,因为本例中UI不需要做任何事件

-
选中Text,点击重置,文本居中,颜色为白色,内容为0


- 选中Canvas,将渲染模式改为世界空间,接着修改大小,改为100.100


-
将缩放改为0.01,拖动到小球上

-
使得Circle和Canvas的位置坐标一致,都为0,2,0

-
选择MainCamera设置为Canvas的事件摄像机

小球运动
-
创建一个脚本,选择MonoBehaviour,命名为RotateSelf

-
将此脚本挂载到Circle的下面

-
编写脚本
c#
using JetBrains.Annotations;
using UnityEngine;
public class NewMonoBehaviourScript : MonoBehaviour
{
public float speed = 90;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Rotate(new Vector3(0, 0, speed * Time.deltaTime));
}
}
- 在场景中点击播放,可以看到Circle在逆时针旋转,如果想要顺时针旋转,在speed前加一个负号

针头
- 将针导入到层级里,将Pin的大小适当放大


-
制作针的尾部,复制一个Circle

-
调整大小位置颜色


-
将Pin拖入Prefabs文件夹里,方便进行实例化创建

-
给针头添加碰撞器,选中针头,在检查器底下的添加组件,搜Circle Collider 2D添加


生成针
-
创建两个空对象,将第一个命名为StartPosition

-
将Pin放到StartPosition的下面,这样可以进行预览,调整位置


- 将StartPosition复制,拖到屏幕外面进行实例化


-
然后删去针,改名为SpawnPositon

-
创建一个空对象,命名为GameManager

-
创建一个GameManager脚本,挂载到对象下面
c#
using UnityEngine;
public class GameManager : MonoBehaviour
{
private Transform startPosition;
private Transform spawnPosition;
public GameObject pinPrefab;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
startPosition = GameObject.Find("StartPosition").transform;
spawnPosition = GameObject.Find("SpawnPosition").transform;
SpawnPin();
}
// Update is called once per frame
void Update()
{
}
void SpawnPin()
{
GameObject.Instantiate(pinPrefab, spawnPosition.position, pinPrefab.transform.rotation);
}
}
-
将PIn实例拖到右边的Pin Prefab里

-
点击运行后屏幕外生成了针
