创建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属性
    }

 

 

 

更多推荐