Unity C#脚本开发快速入门指南
·
创建C#脚本
在unity中创建一个存放C#文件的文件夹命名为Scripts
右击Creat创建C#脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//namespace属于命名空间,用于组织代码
//在Unity中,通常不需要使用命名空间,但可以根据需要使用
public class NewBehaviourScript : MonoBehaviour
{
// Start is called before the first frame update
void Start() // Unity生命周期函数之一,在脚本启用时调用一次
{
print("Hello, Unity!"); // 输出一条消息到控制台
}
// Update is called once per frame
void Update() // Unity生命周期函数之一,在每一帧更新时调用
{
print("Updating..."); // 输出一条消息到控制台
}
}
脚本是可以预览的,但是没有办法编辑,脚本的名字和类名必须保持一致

关于单行注释和多行注释
//注释不能破坏原本的代码结构
//为单行注释
/*
*/多行注释
关于日志输出
Debug.Log(1); //日志输出方式
Debug.LogWarning(1); //警告输出
Debug.LogEditor(1); //错误输出

声明变量
int hp = 100; //声明变量
print(hp); //可以任意改变
print(100); //不能随意改变
//在使用变量之前一定要初始化
int hp2; //数据类型 变量名;
hp2=110;
print(hp);
数组的声明和使用
在unity中如果需要多个游戏对象而定义不过来时i,可以创建变量或对象数组
数组的表达形式 数组[ ] 数组名 = {数组值}
//数组声明的第一种方式
int [] hps={100,20,80,90,30}; //数组的长度为5
//通过索引来访问数据 0 数组名[索引]
//索引一定要存在数组才能生效
int[]hps=new int [10];//创建数组,并定义数组的长度是10
int []hps=new int[5]{34,2,324,3,2};
循环遍历数组
int[]hps=new int[9]{1,10,25,62,24,54,78,59,10}
for(int i=0;i<9;i++)
{
print(hps);
}
for(int i=0;i<hps.length;i++) //通过length可以获得数字的长度
{
print(hps[i]);
}
方法的定义和调用
method 方法
方法的基本结构
void 方法名(参数)
{
方法体
}
枚举类型
enum roleType{
Mag,
Soldier,
Wizard
}
void Start()
{
int roleType=0;
roleType rt=roleType.Mag;
}
方法中的返回值
在方法中定义的变量不能再另外一个方法中中实例化,所以需要返回值
一个方法只能有1个返回值,返回值的方法类型要和返回值的类型相同
返回值的作用:可以将不同方法进行重载并进行返回
void Start()
{
Add(5, 10); //调用方法重载
int result = Add(20, 30); //调用方法重载并获取返回值
print("计算结果:" + result); //输出计算结果
}
int Add(int a, int b) //方法重载
{
int result = a + b; //计算两个整数的和
return result; //返回计算结果
}
在上述代码中方法被进行重载,定义了新的int参数返回,在Start方法中创建新的int值调用方法重载,并获取了最终的返回值
类的字段使用
void Start()
{
Enemy e1 = new Enemy(); //创建一个Enemy对象
e1.name = "Goblin"; //设置敌人的名称
e1.hp = 100; //设置敌人的生命值
print("敌人名称:" + e1.name); //输出敌人的名称
}
class Enemy
{
public string name; //public修饰符表示该字段可以被其他类访问
public int hp;
}
类中的方法
class Enemy
{
public string name; //public修饰符表示该字段可以被其他类访问
public int hp;
public void move() //定义一个方法
{
print("敌人移动了");
}
public void attack() //定义另一个方法
{
print("敌人攻击了");
}
} //结合Start方法
Unity的脚本结构
sing System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MyGame; //自行创建的创建命名空间需要在此引用
public class JieGou : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
namespace MyGame
{
class GameData
{
}
}
获取组件
public class ZuJian : MonoBehaviour
{
public ZuJian z; //引用自身类的组件,用于访问其他脚本中的变量和方法
public GameObject player;
// Start is called before the first frame update
void Start()
{
Transform t = GetComponent<Transform>(); //访问自身游戏对象的Transform组件
print(t);
BoxCollider[] c = GetComponents<BoxCollider>(); //访问自身的Collider组件
print(c);
foreach (Collider col in c)
{
print(col);
}
print(GetComponent<ZuJian>());
GetComponentInChildren<ZuJian>(); //访问子对象中的组件
print(player.GetComponentInParent<Rigidbody>()); //访问父对象中的Rigidbody组件
}
以上就就是所有的组件调用
组件的禁用与激活
BoxCollider box = GetComponent<BoxCollider>();
box.enabled = false; //禁用BoxCollider组件
获取游戏物体的四种方式
public GameObject cameraMain;
public Camera c;

transform.Find("Cube").GetComponent<Renderer>().material.color = Color.red; //获取子对象Cube,只能查找子物体路径,要保证名字的唯一性
GameObject.FindGameObjectWithTag("Player").GetComponent<Rigidbody>().useGravity = false; //通过标签获取对象并修改Rigidbody属性
}
更多推荐

所有评论(0)