现在的Unity插件五花八门,现在自己写出一个简单的游戏甚至不用自己写脚本,利用Asset Store商店的插件即可完成,但还是会有需要自己写脚本的时候,本章节将会介绍Unity所使用的C#语法。
在Project点击右键新增Create→C# Script并取名
如果Project的C# Script有改名,必须把脚本打开把名称改为一样的不然会出Bug。
新增好後滑鼠左键点击Script两下开启Script。
Unity常用的C#语言介绍
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScriptA : MonoBehaviour
{
//这边通常是写要放入此脚本的物件或UI、脚本......等
[Header("这是注解的其中一种,增加脚本可读性")]
public GameObject TestOBJ02;
[Space(20)]
[Header(" [Space(要间隔多远的数字)]是用来增加间距的")]
public GameObject TestOBJ03;
[Header("public公开变数,GameObject可以放入Prefab物件或Hierarchy的物件")]
public GameObject TestOBJ01;
//没有加public只能在脚本内使用,元件列会看不到
GameObject TestOBJ001;
[Header("在物件後面加上中括弧会变为阵列")]
public GameObject[] TestOBJS;
[Header("在後面加上=new GameObject[数字]阵列会变为[]的值")]
public GameObject[] TestObjects=new GameObject[5];
[Header("Int为整数,不能有小点数")]
public int TestInt;
[Header("float为浮点数,可以有小点数,需在数字後面加上f\n例如3.25f")]
public float TestFloat;
[Header("string为字串")]
//需在字串前後加上""
public string Teststring;
[Header("bool为布林,布林值只有true和false")]
//通常用来开启或关闭物件
public bool Testbool;
[Header("Vector3为一组三维值(x,y,z)")]
//通常用来移动或旋转物件
public Vector3 TestVector3;
[Header("Vector2为一组二维值(x,y)")]
//通常用来移动或旋转物件,使用在2D游戏
public Vector2 TestVector2;
[Header("Button为UI的按钮")]
//开始游戏或设定按键通常由Button做成
public Button TestButton;
[Header("Image为UI的画布")]
//游戏的背景图通常由Image做成
public Image TestImage;
#region 这是可以缩小region到endregion间的程序,管理程序码非常方便
#endregion
//两条斜线为单排注解
/*
斜线星号为
多排注解
*/
/// <summary>
/// 3条斜线也是注解的一种
/// 通常会有<summary>包住
/// </summary>
////这边通常是写要执行的函式
// 游戏开始时会执行此函式内的程序
void Start()
{
//执行AB()协程
StartCoroutine(AB());
}
// 每一帧执行一次,通常在一直侦测或物件一直执行动昨时使用
void Update()
{
// if 判断式:if(要执行的事){}else{}
//要执行的事发生就会执行此段函式,没发生就会执行else後的函示。
#region 这是范例,按下S键後会发生的事情
if (Input.GetKey(KeyCode.S)) {
//Debug.Log()里的字串或值会在Console内出现
Debug.Log("按下按键,这个会一直触发");
}
else {
Debug.Log("没按或是按下其他键");
}
if (Input.GetKeyDown(KeyCode.S))
{
Debug.Log("按下按键,按下去的刹那触发");
//执行EFGH函式
EFGH();
}
if (Input.GetKeyUp(KeyCode.S))
{
Debug.Log("GetKeyUp放开按键,放开按键时触发");
//执行ABCD函式
ABCD();
}
#endregion
}
//public公开变数,可以给其他脚本读取
public void ABCD()
{
//For回圈
//int i=0;给整数i的起始值为0,i < TestOBJS.Length当i值小於TeseOBJS阵列值时,i++ i+1加到大於阵列值
//当i加到大於阵列值时,就会跳出回圈
for (int i = 0; i < TestOBJS.Length; i++) {
Debug.Log("这是Debug.Log印的:" +i);
}
}
//private私有变数,只能在自己脚本使用
//如果前面未加Public会被默认为private欧
private void EFGH()
{
Debug.Log("执行EFGH");
}
//IEnumerator协程
//需要在其他函式添加(StartCoroutine(函式标题);)才能执行此协程
IEnumerator AB()
{
yield return 0;
}
}
写好後将脚本按住左键拖曳给物体,可以看到TestOBJ001没在上面
下一张章节会教多张图卡辨识
>>: DAY 10:Two-phase Termination Pattern,我就跟你说不要乱拔电源!
上次说到了在特徵子集 Q 之下 被特徵子集 P 细分的程度 如果是 1 则表示 P 可以完全分类 Q...
1.前言 昨天那篇教各位学会使用IFTTT结合Line,当时传输资料时是透过Line Notify的...
为什麽选择 heroku google 的服务下面有 google cloud 可以部属 api,但...
上一节我们谈到JDK的安装以及第一次编译java程序,不过真实软件开发场景,使用IDE会更加有效率,...
这是我一边学习一边写下的笔记,如果内容有错,恳请在下方留言跟我说,我会非常感谢的!!! 以下我们用主...