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 () {
}
}
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");