I'm new to unity :
I create in Unity a simple cube and put some texture over. I rotate the cube... move camera....then export to android studio. When I run everything looks like in Unity.
But I want to move camera or the cube from android studio code ( programming lines ) and I can not find any way to .."findViewById" or similar to be able to find my cube :)
I try to make a C# file ( I just crate one in assets folder ) and put :
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);
}
}
So... how can I control my cube ( designed in unity and imported in android studio ) from programming lines ?
解决方案
You can call C# function from Java with UnityPlayer.UnitySendMessage.
This is the what the parameters look like:
UnityPlayer.UnitySendMessage("GameObjectName", "MethodName", "parameter to send");
In order to have access to this function, you have to include classes.jar from the \Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes directory into your Android Studio project then import it with import com.unity3d.player.UnityPlayer; in the Android Studio Project.
Your C# code:
bool rotate = false;
void startRotating()
{
rotate = true;
}
void stopRotating()
{
rotate = false;
}
void Update()
{
if (rotate)
transform.Rotate(10f, 50f, 10f);
}
Let's assume that the script above is attached to GameObject called "Cube".
To start rotation from Java:
UnityPlayer.UnitySendMessage("Cube", "startRotating", null);
To stop rotation from Java:
UnityPlayer.UnitySendMessage("Cube", "stopRotating", null);