【Unity API】4---MomoBehavior总览

1.Public Functions

1).CancelInvoke : 取消此MonoBehaviour上的所有Invoke调用。

public void CancelInvoke();

using UnityEngine;
using System.Collections.Generic;

public class ExampleScript : MonoBehaviour
{
    public GameObject projectile;

    void Start()
    {
        // 从2秒开始,每0.3秒重复该方法
        InvokeRepeating("LaunchProjectile", 2, 0.3F);
    }

    void LaunchProjectile()
    {
        // Create a projectile GameObject and set its velocity to a random direction
        GameObject instance = Instantiate(projectile);
        Rigidbody rigidbody = instance.GetComponent();

        rigidbody.velocity = Random.insideUnitSphere * 5;
    }

    void Update()
    {
        // 取消所有Invoke调用
        if (Input.GetButton("Fire1"))
            CancelInvoke();
    }
}

2).Invoke:以秒为单位调用某方法。相当于定时调用

public void Invoke(string methodName, float time);

using UnityEngine;
using System.Collections.Generic;

public class ExampleScript : MonoBehaviour
{
    // 2s后调用方法LaunchProjectile

    Rigidbody projectile;

    void Start()
    {
        Invoke("LaunchProjectile", 2);
    }

    void LaunchProjectile()
    {
        Rigidbody instance = Instantiate(projectile);
        instance.velocity = Random.insideUnitSphere * 5;
    }
}

3).InvokeRepeating  以时间秒调用方法methodName,然后每隔repeatRate秒重复一次。

public void InvokeRepeating(string methodName, float time, float repeatRate);  方法,调用时间,重复时间

using UnityEngine;
using System.Collections.Generic;

// 2s后开始调用
// 每0.3s重复调用

public class ExampleScript : MonoBehaviour
{
    public Rigidbody projectile;

    void Start()
    {
        InvokeRepeating("LaunchProjectile", 2.0f, 0.3f);
    }

    void LaunchProjectile()
    {
        Rigidbody instance = Instantiate(projectile);

        instance.velocity = Random.insideUnitSphere * 5;
    }
}

4).IsInvoking  对methodName的任何调用是否挂起?是否在调用

public bool IsInvoking(string methodName);

using UnityEngine;
using System.Collections.Generic;

// 按下Space键后2秒后实例化项目。
// 当前一个RigidBody完成Invoke时,将调用LaunchProjectile。

public class ExampleScript : MonoBehaviour
{
    public Rigidbody projectile;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && !IsInvoking("LaunchProjectile"))
            Invoke("LaunchProjectile", 2.0f);
    }

    void LaunchProjectile()
    {
        Rigidbody instance = Instantiate(projectile);
        instance.velocity = Random.insideUnitSphere * 5;
    }
}

5).StartCoroutine 开启一个协程

public Coroutine StartCoroutine(IEnumerator routine);

6).StopCoroutine 关闭一个协程

public void StopCoroutine(string methodName);

public void StopCoroutine(IEnumerator routine);

public void StopCoroutine(Coroutine routine);

开启和关闭的参数需要一致才行

private IEnumerator ie;
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //第一种
            //ie = Fade();
            //StartCoroutine(ie);
            
            //第二种
            StartCoroutine("Fade");
        }
        if (Input.GetKeyDown(KeyCode.S))
        {   
            //第一种
            //StopCoroutine(ie);

            //第二种
            StopCoroutine("Fade");
        }
    }

    IEnumerator Fade()
    {
        for (; ; )
        {
            //cube.GetComponent().material.color = new Color(i, i, i,i);
            Color color = cube.GetComponent().material.color;
            Color newColor = Color.Lerp(color, Color.red, 0.02f);
            cube.GetComponent().material.color = newColor;
            yield return new WaitForSeconds(0.02f);
            if (Mathf.Abs(Color.red.g - newColor.g) <= 0.01f)
            {
                break;
            }
        }

7).StopAllCoroutines 停止所有协程

public void StopAllCoroutines();

你可能感兴趣的:(UnityAPI)