InvokeRepeating(方法,xmiao开始调用)
InvokeRepeating(方法,xmiao开始调用)
MonoBehaviour中Invoke的使用
Invoke:调用时Invoke中的方法不会立即被调用,会添加到队列里面等待
IsInvoking:判断某个方法是否正在被调用,在队列中存在显示True
InvokeRepeating:每间隔几秒调用一次,里面的方法会一直在队列中
public class InvokeCS : MonoBehaviour {
// Use this for initialization
void Start () {
//Invoke("Attack", 3);//等待3秒调用Attack方法,不调用前在队列中等待
InvokeRepeating("Attack", 4, 2);//等待4秒开始调用,然后每隔2秒调用一次,Attack一直在队列中
}
// Update is called once per frame
void Update () {
bool rs =IsInvoking("Attack");//判断这个方法是否正在被调用,未调用显示True
print(rs);
}
void Attack()
{
print("正在攻击");
}
}
IsInvoking("")可以用来判断括号内方法是否正在被调用
Invoke()会把括号内的方法加进队列里,并执行后面的等待时间,这时间内IsInvoking会显示为true
InvokeRepeating(方法,4,2)4s后调用第一次,之后每间隔2s调用一次
Invoke
Invoke(str 函数名 ,int 几秒后调用)
//几秒后调用目标函数
IsInvoKing(str 函数名) 返回bool
目标函数是否被调用
InvokeRepeating(str 函数名,int 初次调用等待时间 ,float )
Invoke("要執行的method名稱" , delay時間)
//該method會在指定時間後執行
IsInvoking("要檢查的method名稱")
//會去等待列檢查該method是否正在等待,若是則 return true,反之 return false
InvokeRepeating("要執行的method名稱" , 多久後開始執行 , 之後每等待多久執行一次)
CancalInvoke("要執行的method名稱")
//刪除等待列中的 Invoke method
Invoke("FunctionName",time);
cancelInvoke (可以指定特定方法,不指定就是当前脚本全部);
invokeRepeating("FunctionName",firsttime,nexttime);
bool result = isInvoking ("FunctionName");
Invoke:调用方法;
Attack:方法名;
3:几秒后调用;
Invoke("Attack",3);
InvokeRepeating:一直调用
InvokeRepeating("Attack,4,2");
Attack:方法名;
4:几秒后开始;
2:间隔几秒调用一次;
CanceLInvoke("Attack");取消Attack方法的调用;
CanceLInvoke:();:取消所有Invoke方法;
IsInvoking
Invoke
InvokeRepeating
CansInvoking
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API07Invock : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
// Invoke("Attack",3);
InvokeRepeating("Attack",3,5);
CancelInvoke();
}
// Update is called once per frame
void Update()
{
bool res=IsInvoking("Attack");
print(res);
}
void Attack()
{
print("开始攻击");
}
}
Invoke用于调用方法(“方法”,时间(延迟几秒调用))
InvokeRepeating调用一个方法("方法",时间(从第几秒开始),时间(几秒调用一次))
CancellInvoke();取消所有的调用函数;
1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object a =FindObjectOfType(typeof(组件名))
Rigidbody a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数
GetComponent;只会得到在游戏物体身上的第一个检测到的组件
GetComponent;会得到物体上所有的组件
GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件
GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件
GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件
GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件
8.Public Functions
Invoke;
Public void Invoke(string methodName,float time );可延时调用方法
CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)
InvokeRepeating;重复调用方法
IsInvoking;判断方法是否正在被调用