在Unity的c#脚本中使用两个类

本文关键字:两个 Unity 脚本 | 更新日期: 2023-09-27 18:06:08

我复制了游戏中的关卡1。我想让它的工作方式与第1级相同,只是在前一个基础上做了一个小的添加。一个脚本和一个碰撞器被附加到预制件上,其中碰撞器函数在同一个脚本的两个类中使用。我在脚本中使用两个类。在我的游戏关卡2中,我希望调用第二个类,并希望脚本执行第二个类的碰撞器功能。我怎么叫第2级的二等班?请帮帮我。谢谢你。

public class class1: Monobehaviour {
//public variables declaration
void OnTriggerEnter2d(){}
}
public class class2: Monobehaviour {
//public variables declaration
void OnTriggerEnter2d(){}
}

在Unity的c#脚本中使用两个类

您可以创建一个接口,并让两个类实现相同的接口。

public interface ITriggerBehaviour
{
    void OnTriggerEnter2d();
}
public class class1: Monobehaviour, ITriggerBehaviour
{
    //public variables declaration
    void OnTriggerEnter2d(){}
}
public class class2: Monobehaviour, ITriggerBehaviour
{
    //public variables declaration
    void OnTriggerEnter2d(){}
}

然后,在不知道哪个类实现该方法的情况下,以相同的名称调用它。

public void SomeOtherFunction()
{
    // In your code, the object will be provided elsewhere, in which case
    // you may want to use the 'as' operator to convert the object
    // reference to the interface and test for 'null' before using it.
    // This example shows that an interface can be used to hold a reference
    // to different types of object, providing they both implement the
    // same interface.
    ITriggerBehaviour someObject;
    if(currentLevel == 1)
        someObject = new class1();
    else
        someObject = new class2();
    // Call the method via the interface
    someObject.OnTriggerEnter2d();
}