首页 文章

从Java调用Unity函数

提问于
浏览
1

我是团结的新手:

我在Unity中创建了一个简单的立方体并将一些纹理放在上面 . 我旋转立方体...移动相机....然后导出到Android工作室 . 当我运行一切看起来像Unity .

但我想从Android工作室代码(编程线)移动相机或立方体,我找不到任何方式..“findViewById”或类似的能够找到我的立方体:)

我尝试制作一个C#文件(我只在资源文件夹中创建一个)并放入:

public class test : MonoBehaviour {
public GameObject respawn;
void Start () {

    Debug.Log("aaaaaaaaaaaaa1111111111111111");
    if (respawn == null)
        respawn = GameObject.FindWithTag("mamaie");


    respawn.transform.Rotate(10f, 50f, 10f);

}

// Update is called once per frame
void Update () {
    transform.Rotate(10f, 50f, 10f);
}

void LateUpdate()
{
    transform.Rotate(10f, 50f, 10f);
}
}

那么......我如何从编程线控制我的立方体(在统一设计并在android studio中导入)?

1 回答

  • 1

    您可以使用 UnityPlayer.UnitySendMessage 从Java调用C#函数 .

    这是参数的样子:

    UnityPlayer.UnitySendMessage("GameObjectName", "MethodName", "parameter to send");
    

    要访问此功能,您必须将 <UnityInstallDirectory>\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes 目录中的classes.jar包含到Android Studio项目中,然后在Android Studio项目中使用 import com.unity3d.player.UnityPlayer; 导入它 .

    你的C#代码:

    bool rotate = false;
    
    void startRotating()
    {
        rotate = true;
    }
    
    void stopRotating()
    {
        rotate = false;
    }
    
    void Update()
    {
        if (rotate)
            transform.Rotate(10f, 50f, 10f);
    }
    

    让我们假设上面的脚本附加到名为“Cube”的GameObject .

    要从Java开始轮换:

    UnityPlayer.UnitySendMessage("Cube", "startRotating", null);
    

    要停止来自Java的轮换:

    UnityPlayer.UnitySendMessage("Cube", "stopRotating", null);
    

相关问题