unity学习1脚本C#

unity脚本,Transfrom

1、通过unity创建的C#脚本,修改需要注意,类名和文件名称必须保持一致。

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

2、C#脚本绑定到一个GameObject上之后,可以认为C#脚本是这个物体的组件(跟Transform一样的组件)即脚本组件,脚本组件本身是一个脚本,但是这个脚本是不可以拥有构造函数的,不然运行游戏可能会出现错误。个人认为运行游戏绑定的脚本运行unity会主动运行Start()函数进行初始化,但是这时候如果我们定义构造函数,构造函数本身也会初始化出现冲突。
3、脚本组件中定义的公共变量可以在unity的Inspector中的脚本组件区域显示,并且自行定义值。

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {
    public string myName;
    
    // Use this for initialization
    void Start () {
        Debug.Log("I am alive and my name is " + myName);
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

 

Unity新建脚本如何编辑 unity新建脚本报错_构造函数


EditingVarInspector

 

4、通过编辑脚本组件我们可以控制绑定该脚本的GameObject,当然也可以控制其他的非绑定的GameObject,这个需要获取到,或者通过public 属性定义,并绑定一个GameObject。

//获得游戏物体的刚体组件,并进行操作
Rigidbody rb = GetComponent<Rigidbody>();
rb.velocity = transform.up;
 
 /*物体中的transform组件比较特殊,transform组件在GameObject中是不可删除的,所以每一个GameObject必然存在Transform组件
  *transform组件存在许多各种各样的方法,我们可以通过transform获得绑定脚本组件的游戏物体
  *transform中还可以通过方法访问子对象或父对象的组件信息。
  *一句话获得了transform组件就相当于我们可以获得组件的游戏物体GameObject。
  *transform中获得组件、游戏物体都是可以和自己的游戏物品存在父子关系的GameObject,两个平行关系不可以获得。
  *gameobject中也存在获取组件的方法,和transform中的方法是一样的。
  */
  
 //在父物体的脚本组件中找到子物体并进行操作
GameObject go = this.transform.Find("Cube").gameObject;
go.GetComponent<Renderer>().material.color = Color.green;

 //在游戏场景中获得一个物体,同名的话,会获得子对象,同层级同名会获得后创建的物体。
 GameObject go = GameObject.Find("Cube");
 go.GetComponent<Renderer>().material.color = Color.blue;

//在游戏场景中也可以通过标签进行获取游戏对象
GameObject player = GameObject.FindWithTag("Player");
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");