UnityC#五种方法调用其他脚本函数及传值
2024/3/6 11:48:48
关键词:unity 脚本 参数 调用 关闭 函数
2024/3/6 11:48:48
关键词:unity 脚本 参数 调用 关闭 函数
以下是Unity C#的种方法调用其他脚本函数,变量的调用也是类似但不完全一致,可自行摸索。但并没有哪种方法绝对万能,应该是各表优劣,相得益彰,应根据实际情况取舍:
1 官方推荐,无需绑定物体
//这里只能调用其他脚本的共有函数,参数可是自己变量或其他脚本共有变量
====================================================
2 使用命名空间
文件:类1.cs:
文件:类2.cs:
值得注意的是,不同页面可以使用同一命名空间名,但里面的函数、变量、方法不能冲突。这样第三方页面只需引用这个命名空间,就能得到所有相关页面的函数、变量、方法,相关页面也可共享松油函数、变量、方法。
================================================
3 绑定调用A
GameObject.Find("脚本所在的物体的名字").SendMessage("函数名");
//能调用public和private类型函数
例如:GameObject.Find("绑定物").SendMessage("刷",i);
可以调其他页面脚本函数,可带参数i。
==================================================
4 绑定调用B
GameObject.Find("脚本所在的物体的名字").GetComponent<脚本名>().函数名();
//只能调用public类型函数
===================================================
5 静态调用
被调用脚本函数为public static类型,调用时无需声明、无需绑定,无须Using,直接用
脚本名.函数名()
IEnumerator类可延迟需要多线程调用的函数,如不能静态执行,改成普通函数。
安卓回调类的也多半不能静态执行,改用其他方法。
================================================================
重要:如果你调用多个文件的函数,这些函数一定不能重名,否则可能失败或穿帮。
================================================================
U3D中不同脚本间参数传递
1.静态static参数传递
Static静态方法可被其他脚本优先调用,不需获得组件和实例化。调用:脚本名.函数名()。
如脚本X包含:
其他脚本就可以直接以
2.使用Component.SendMessage()
如:
3.直接调用脚本
GameObject.Find("脚本所在的物体的名字").GetComponent<脚本名>().函数名();
如:
4.启动与关闭同一物体的脚本
关闭当前物体上的名为【字幕】的脚本:
启动物体【A】上的名为【字幕】的脚本:
[1] [2]
相关文章(向右看)..
1 官方推荐,无需绑定物体
private Test myGG;//把另一脚本的CLASS声明成自己的一个类,Test为其他脚本
void Awake() {
myGG = new Test();//创建一个Test的实例instance class
myGG.OpenFile();//调用Test的函数
}
//这里只能调用其他脚本的共有函数,参数可是自己变量或其他脚本共有变量
====================================================
2 使用命名空间
文件:类1.cs:
namespace 空间1{
public class 类1 : MonoBehaviour{
public string xxx;//变量xxx
public static void 图片压缩(imagePath){ ... }//函数图片压缩
}
}
文件:类2.cs:
using 空间1;//很重要,不可缺失
namespace 空间2{
public class 类2 : MonoBehaviour{
public 空间1.类1 xxx;//定义一个属于类1的变量xxx
类1.图片压缩(imagePath);//执行一个属于类1的函数:图片压缩
}
}
值得注意的是,不同页面可以使用同一命名空间名,但里面的函数、变量、方法不能冲突。这样第三方页面只需引用这个命名空间,就能得到所有相关页面的函数、变量、方法,相关页面也可共享松油函数、变量、方法。
================================================
3 绑定调用A
GameObject.Find("脚本所在的物体的名字").SendMessage("函数名");
//能调用public和private类型函数
例如:GameObject.Find("绑定物").SendMessage("刷",i);
可以调其他页面脚本函数,可带参数i。
==================================================
4 绑定调用B
GameObject.Find("脚本所在的物体的名字").GetComponent<脚本名>().函数名();
//只能调用public类型函数
===================================================
5 静态调用
被调用脚本函数为public static类型,调用时无需声明、无需绑定,无须Using,直接用
脚本名.函数名()
IEnumerator类可延迟需要多线程调用的函数,如不能静态执行,改成普通函数。
安卓回调类的也多半不能静态执行,改用其他方法。
================================================================
重要:如果你调用多个文件的函数,这些函数一定不能重名,否则可能失败或穿帮。
================================================================
U3D中不同脚本间参数传递
1.静态static参数传递
Static静态方法可被其他脚本优先调用,不需获得组件和实例化。调用:脚本名.函数名()。
如脚本X包含:
public static void FC(string A){ Debug.Log(A);}
其他脚本就可以直接以
X.FC("你好");
来调用。2.使用Component.SendMessage()
GameObject.Find("脚本所在的物体的名字").SendMessage("函数名");
如:
GameObject.Find("地球").SendMessage("FA","SDF");
调用物体"地球"下脚本中FA方法,参数为"SDF"3.直接调用脚本
GameObject.Find("脚本所在的物体的名字").GetComponent<脚本名>().函数名();
如:
GameObject.Find("月球").GetComponent<脚本N>().YU("你好");
调用脚本N的函数YU。函数YU需要用Public定义。4.启动与关闭同一物体的脚本
关闭当前物体上的名为【字幕】的脚本:
this.GetComponent<字幕>().enabled=false;
启动物体【A】上的名为【字幕】的脚本:
GameObject.Find("A").GetComponent<字幕>().enabled=true;
相关文章(向右看)..