学习目标:
今天教大伙怎么编写Unity脚本,缺少脚本的加持再强大的组件也都是假的
简单介绍一下Untiy的C#的脚本是怎么样的
首先它是继承MonoBehavior类的,只有继承了这个类才能使用Unity的组件如Tranform,Rigibody
其次是有引用命名空间用using,固定有using System.Collections;
using System.Collections.Generic;
using UnityEngine;
其实前两个一般用不到
然后就是类class,它继承了MonoBehavior类,而且不用main()函数和构造函数,取而代之的是回调函数,有很多回调函数如Awake(),Start()初始化用和Update()每帧调用,其它的就不介绍了。
成员变量只有public和用特性[SerializeField]才能在Inspetor面板显示出来序列化。
学习内容:
猜字代码的逻辑在于,玩家想一个1到1000的数,让计算机来猜,刚开始给1和1000的随机数,然后玩家来点击Higher或是Lower,随后更新中间值直至猜到数。
代码NumberWizard.cs如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class NumberWizard : MonoBehaviour
{
[SerializeField] int min;
[SerializeField] int max;
[SerializeField] TextMeshProUGUI guessText;
int guess;
void Start()
{
guess = Random.Range(min,max+1);
guessText.text = guess.ToString();
max += 1;
}
public void OnPressedHigher()
{
max = guess - 1;
NextGuess();
}
public void OnPressedLower()
{
min = guess+1;
NextGuess();
}
void NextGuess()
{
guess = Random.Range(min, max + 1);
guessText.text = guess.ToString();
}
}
其中Start()中是游戏一开始运行时就要执行的,
而后面的函数用public是添加事件给Button按键,相当于JAVA中的委托
我们先创建一个空对象叫GamePlay,然后给它刚刚写的脚本(直接拽进来)拖到Project面板中作为预设体Prefab,这样可以在不同场景直接拖预设体进来避免重复创建的麻烦。 在Higher和Lower的OnClick()找到我们写的public的方法OnPressedLower()和OnPressedHigher();
当我们点击按钮时他们会执行写的方法
学习产出:
由此我们成功制作出一款通过按钮点击来触发函数的代码。
并且将其挂载到Button上