今天要实现用脚本(script)改变文字(Text),写一个苹果记分板。
主要是侦测碰撞事件,再因碰撞改变其他脚本变数。(利用全域变数static)
其他脚本负责记录分数与显示分数。
所以今天要写两个脚本:
一、记录与显示分数
二、碰撞事件
首先,创一个Text(右键→UI→Text)物件,负责显示分数,和挂载分数纪录脚本。
接着就来写纪录分数脚本吧!!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //Text相关的函数都存在UI的命名空间内,所以要添加这个
public class ScoreBoard : MonoBehaviour
{
//变数宣告
public static int score; //设定成 public(外部可取) static(全域)
//因为数量是自然数,所以使用int
public Text ShowScore; //建立Text(变数的概念),从游戏引擎拖曳text物件
//初始化
void Start() {
score=0; //一开始为0
}
//不断更新分数
void Update() {
show();
}
private void show(){
ShowScore.text="apple:"+score.ToString();
// ShowScore抓到的text物件.的text文字 = " ";
// .ToString()可将int转为string
}
}
写好之後,将脚本挂载到Text之下,或是Text的父物件。(其实挂在哪都没差,不影响取值和显示)
并且把Text物件拖曳至脚本中。
碰撞事件(侦测碰撞)要成立有几个条件:
1.碰撞的物体(双方)都要挂载 形状collider 2D
2.主动碰撞的一方要挂载Rigidbody 2D
3.碰撞脚本要挂载在主动碰撞方
要碰撞的物体是小红帽(role)和她要捡的苹果(apple)
主要碰撞方是小红帽,苹果是被撞的一方;所以脚本会挂在小红帽身上
然後替苹果(apple)用tag标记,tag名字可以自订。
接着就来写纪录分数脚本吧!!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AppleCollision : MonoBehaviour
{
//初始化
void Start() {
//建立碰撞器(变数的概念)
BoxCollider2D bx;
//将这个脚本的物体碰撞器设给变数
bx = gameObject.AddComponent<BoxCollider2D>() as BoxCollider2D;
}
//碰撞事件,只要this产生碰撞,就会引起这个事件
void OnCollisionEnter2D(Collision2D coll) //传入碰撞对象,取名coll(可自订)
{
//触发条件
if (coll.gameObject.tag == "apple") //如果碰撞对象.的物件.的tag是apple
{
Destroy(coll.gameObject); //碰坏此物件
ScoreBoard.score++; //ScoreBoard这个class.的score全域变数
Debug.Log(ScoreBoard.score);//检查变数有没有加成功
}
}
}
主要碰撞方是小红帽,所以脚本挂在小红帽身上
按下开始,右上角苹果数量初始化为0
1操控小红帽去碰撞苹果,苹果消失,右上角苹果数量初始化为1
主控台显示苹果数量为1
<<: [Day 3]开胃沙拉-Python安装及Vagrant虚拟环境架设
>>: DAY14 - [JS] 扩充toDoList功能 : 新增 category
追求更好的程序码品质 语焉不详的程序码 原本 web camp 在 training JavaSc...
在刚开始学习Flutter时如果读到有关状态管理的文章大部分都会是与「BLoC」相关的内容,虽然真的...
实作 -『如何启用 WAF日志以及汇入 BI 进行分析』, Data Analytics Pipel...
TiDB针对备份还原有一套另外的工具BR,就是Backup&Restore。 BR包括在pi...
想请问一下,公司用了本人一个 excel 档案已经几年了,一般也是自动化处理公司内部一些文件或报告类...