unity C#脚本开发基础

来源:互联网 发布:域名生成工具 编辑:程序博客网 时间:2024/05/18 02:08

(一)、变量

public string player = "dog";//作用域 变量类型 变量名;

(二)、数组
建议使用List泛型List

using System.Collections.Generic;//使用list容器需要添加该命名空间void start(){    publiec List<string> test = new List<string>();      //新增数据      test.Add(“Fanyoy”);      test.Add(“Chenjd”);      //修改数据      test[1] = “murongxiaopifu”;      //移除数据      test.RemoveAt(0);  }

(三)、其他省略,同正常C#

(四)、注意事项

  1. 必须直接,间接继承MonoBehaviour类,否则不能添加到游戏对象
  2. 使用start或Awake初始化,避免使用构造函数,因为调用时间无法确认
  3. 添加到游戏对象的类类名要和脚本名一样
  4. 协同函数返回类型必须是IEnumerator,并且用yield return 替代yield

(五)、访问游戏对象和组件
1.常用事件响应函数
OnMouseEnter 鼠标移入GUI控件或者碰撞时才响应
OnMouseOver 鼠标停留GUI控件或者碰撞时才响应
OnMouseExit 鼠标移出GUI控件或者碰撞时才响应
OnMouseDown 鼠标按下GUI控件或者碰撞时才响应
OnMouseUp 鼠标释放GUI控件或者碰撞时才响应
OnTriggerEnter 当其他碰撞进入触发器的时候调用
OnTriggerExit 当其他碰撞离开触发器的时候调用
OnTriggerStar 当其他碰撞处于触发器的时候调用
OnCollisionEnter 当其碰撞或者刚体与其他碰撞器或者刚体发生碰撞响应
OnCollisionStar 当其碰撞或者刚体停留其他碰撞器或者刚体发生碰撞响应
OnCollisionExit 当其碰撞或者刚体离开其他碰撞器或者刚体发生响应
OnControllerColliderHit 当控制器移动时与碰撞体发生碰撞时调用
OnBecameVisible 对于任意一个相机可见时调用
OnBecameInVisible 对于任意一个相机不可见时调用
OnEnable 对象启用或者激活状态时调用
OnDisable 对象禁用或者取消激活时候调用
OnDestroy 脚本销毁时候调用
OnGUI 渲染GUI和处理GUI消息时调用

2.访问游戏对象

Gameobject playerByName;Gameobject playerByTag;Gameobject[] enemies;void start()//避免在update中调用,以下函数比较耗时{    PlayerByName=GameObject.Find("name");//通过名称查找    playerByTag=GameObject.FindWithTag("Tag");//通过标签查找    enemies=GameObject.FindGameObjetWithTag("tags");//场景含有多个相同标签游戏对象时,用此函数获取游戏对象数组}

3.访问组件

void start()//避免在update中调用,以下函数比较耗时{    Example script=GetComponet<Example>();//得到游戏对象上的Example脚本组件    Transform transform=GetComponet<Transform>();//得到游戏对象上的Transform组件}void update(){    script.dosomething();//如果非要调用,先在start中初始化}

(六)、常用脚本api
1.Transform组件
控制游戏对象在场景中的位置,旋转,大小比例

了解Transform组件详细?请点击这里

void Update() {        transform.Translate(Vector3.forward * Time.deltaTime);//物体向自身坐标系z轴正方向移动        transform.Rotate(Vector3.right * Time.deltaTime);//物体绕自身坐标系y轴旋转         transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);//物体围绕世界坐标系y轴旋转    }

2.Time类
获取时间相关信息,计算速度,调整时间流逝速度
了解Time类详细?请点击这里

3.Random类
生成随机数
了解Random类详细?请点击这里

using UnityEngine;using System.Collections;public class ExampleClass :MonoBehaviour{    void Example()    {        Application.LoadLevel(Random.Range(0,Application.levelCount));//随机载入不同游戏场景    }}

4.Mathf类
解决复杂的数学公式

了解Mathf类详细?请点击这里

Mathf.SmoothDamp可以制作相机的缓冲跟踪效果,让物体的移动做减速的缓冲效果,将以下脚本绑定到相机上,设置好target目标对象,可看到相机的缓动效果,设置smoothTime的值,可以调节缓动效果持续的时间

using UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour {    public Transform target;    public float smoothTime = 0.3F;    private float yVelocity = 0.0F;    void Update() {        float newPosition = Mathf.SmoothDamp(transform.position.y, target.position.y, ref yVelocity, smoothTime);        transform.position = new Vector3(transform.position.x, newPosition, transform.position.z);    }}

5.Coroutine协同程序
协同程序可以和主程序并形运行,也可以让一段程序等待一段时间后继续运行

了解Coroutine协同程序详细?请点击这里

using UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour {    IEnumerator WaitAndPrint() {        yield return new WaitForSeconds(5);//等待5秒        print("WaitAndPrint " + Time.time);    }    IEnumerator Example() {        print("Starting " + Time.time);        yield return WaitAndPrint();//启动协同程序WaitAndPrint()        print("Done " + Time.time);    }}
原创粉丝点击