C#初级编程-02

七:Awake 和 Start

awake:在脚本程序启用之前执行一次

start:在脚本程序启用之后执行一次

awake与start都只执行一次,无法多次调用

 void Awake ()
    {
        Debug.Log("Awake called.");/*当不启用该脚本时仍生效*/
    }
    
    
    void Start ()
    {
        Debug.Log("Start called.");/*启用该脚本后在awake函数后生效*/
    }

八:Update 和 FixedUpdate

update在代码开始执行后每帧调用一次,多用于函数或变量更新

fixedupdate在代码开始执行后固定时间调用一次,影响到物理对象的动作多用fixedupdate

九:启用和禁用组件 

在脚本中,可以通过enabled来启用或者禁用组件,脚本也是一种组件,可以用enabled来启用或禁用

   private Light myLight;
    
    
    void Start ()
    {
        myLight = GetComponent<Light>();/*mylight为脚本所挂物体上light组件*/
    }
    
    
    void Update ()
    {
        if(Input.GetKeyUp(KeyCode.Space))
        {
            myLight.enabled = !myLight.enabled;/*相反值*/
        }
    }

十:激活游戏对象

在脚本中可以通过setactive来禁用或激活游戏对象,当父物体被禁用时,无法激活子物体,子物体禁用不影响父物体

gameObject.SetActive(false); 

十一:Translate 和 Rotate

translate和rotate包含与transform中,可以实现非刚体物体的平移和旋转

    public float moveSpeed = 10f;
    public float turnSpeed = 50f;
    void Update ()
    {
        if(Input.GetKey(KeyCode.UpArrow))
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
        
        if(Input.GetKey(KeyCode.DownArrow))
            transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
        
        if(Input.GetKey(KeyCode.LeftArrow))
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
        
        if(Input.GetKey(KeyCode.RightArrow))
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
    }

十二:Look At

使一个游戏对象面向一个其他位置,多用于摄像机持续对准某一游戏对象

public Transform target;
    
    void Update ()
    {
        transform.LookAt(target);
    }

十三:Destroy

用来销毁游戏物体或者组件,可延时销毁

 void Update ()
    {
        if(Input.GetKey(KeyCode.Space))
        {
            Destroy(GetComponent<MeshRenderer>());
        }

        if(Input.GetKey(KeyCode.Space))
        {
            Destroy(other);
        }
    }

十四:GetButton 和 GetKey

用于获取输入的键或按钮

down:按下键或按钮后第一帧

up:抬起健或按钮后第一帧

Input.GetKeyDown(KeyCode.Space);

Input.GetKey(KeyCode.Space);

Input.GetKeyUp(KeyCode.Space);

 Input.GetButtonDown("Jump");

Input.GetButton("Jump");

Input.GetButtonUp("Jump");

 十五:OnMouseDown

用于检测碰撞体或GUI上元素的点击

 void OnMouseDown ()
    {
        rigidbody.AddForce(-transform.forward * 500f);
        rigidbody.useGravity = true;
    }

十六:GetComponent

可以用来访问其他脚本和组件,当访问其他对象上的组件时用先定义对象x,再用x.getcomponent,

getcomponent会占用大小运算资源,尽量减少使用

    public GameObject otherGameObject;
    private AnotherScript anotherScript;
    private YetAnotherScript yetAnotherScript;
    private BoxCollider boxCol;
    
    
    void Awake ()
    {
        anotherScript = GetComponent<AnotherScript>();
        yetAnotherScript = otherGameObject.GetComponent<YetAnotherScript>();
        boxCol = otherGameObject.GetComponent<BoxCollider>();
    }

十七:DeltaTime

属于time类,时两次函数更新直接的时常,使用delta time可以使游戏内变化更加平滑

if(Input.GetKey(KeyCode.RightArrow))

transform.position += new Vector3(speed * Time.deltaTime, 0.0f, 0.0f); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值