14.unity变数传递(上)记分板

今天要实现用脚本(script)改变文字(Text),写一个苹果记分板。
主要是侦测碰撞事件,再因碰撞改变其他脚本变数。(利用全域变数static)
其他脚本负责记录分数与显示分数。

所以今天要写两个脚本:
一、记录与显示分数
二、碰撞事件


一、记录与显示分数

首先,创一个Text(右键→UI→Text)物件,负责显示分数,和挂载分数纪录脚本。
1.png

接着就来写纪录分数脚本吧!!

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物件拖曳至脚本中。
2.png

二、碰撞事件

碰撞事件(侦测碰撞)要成立有几个条件:

1.碰撞的物体(双方)都要挂载 形状collider 2D

2.主动碰撞的一方要挂载Rigidbody 2D

3.碰撞脚本要挂载在主动碰撞方

要碰撞的物体是小红帽(role)和她要捡的苹果(apple)
主要碰撞方是小红帽,苹果是被撞的一方;所以脚本会挂在小红帽身上
a1.png

然後替苹果(apple)用tag标记,tag名字可以自订。
a2.png

接着就来写纪录分数脚本吧!!

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
r0.png
1操控小红帽去碰撞苹果,苹果消失,右上角苹果数量初始化为1
r1.png
主控台显示苹果数量为1
r3.png


<<:  [Day 3]开胃沙拉-Python安装及Vagrant虚拟环境架设

>>:  DAY14 - [JS] 扩充toDoList功能 : 新增 category

好想工作室 web camp JS 怎麽 training

追求更好的程序码品质 语焉不详的程序码 原本 web camp 在 training JavaSc...

Day 27 | 状态管理 - BLoC基本介绍

在刚开始学习Flutter时如果读到有关状态管理的文章大部分都会是与「BLoC」相关的内容,虽然真的...

【Day 25】 实作 - 启用 AWS WAF 日志

实作 -『如何启用 WAF日志以及汇入 BI 进行分析』, Data Analytics Pipel...

D18 - TiDB备份还原

TiDB针对备份还原有一套另外的工具BR,就是Backup&Restore。 BR包括在pi...

excel 内有病毒

想请问一下,公司用了本人一个 excel 档案已经几年了,一般也是自动化处理公司内部一些文件或报告类...