Legacy Documentation: Version 4.6
Language: English
Windows Phone 8: Profiler
Windows Phone 8: Plugins

Interaction between Unity and Windows Phone step by step guide

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

In this guide we will interact between Unity and Windows Phone by making Windows Phone aware of game state. Specifically, we will have a sphere moving on the screen which can be stopped/made to move using Unity GUI.Button. Windows Phone will display a XAML text block which will accurately say the current state of the sphere (whether it’s moving or not).

We begin by creating a new Unity Project. Add a sphere and a new C# script to the scene, and add this code to the script:

using System;
using UnityEngine;

public class SphereScript : MonoBehaviour
{
    private bool m_IsMoving = true;
    private bool m_IsMovingLeft = false;

    public Camera GameCamera;
    public event Action<bool> SphereStateChanged;
    public bool IsSphereMoving { get { return m_IsMoving; } }

    void Start()
    {
        if (GameCamera == null)
        {
            throw new Exception("Camera is not attached to the sphere script!");
        }
    }

    void FixedUpdate()
    {
        if (!m_IsMoving)
        {
            return;
        }

        if (m_IsMovingLeft)
        {
            transform.position -= new Vector3(0.2f, 0.0f);

            if (GameCamera.WorldToScreenPoint(transform.position).x < 100.0f)
            {
                m_IsMovingLeft = false;
            }
        }
        else
        {
            transform.position += new Vector3(0.2f, 0.0f);

            if (GameCamera.WorldToScreenPoint(transform.position).x > Screen.width - 100.0f)
            {
                m_IsMovingLeft = true;
            }
        }
    }

    void OnGUI()
    {
        var buttonText = m_IsMoving ? "Stop sphere" : "Start sphere movement";

        if (GUI.Button(new Rect(0, 0, Screen.width, 40), buttonText))
        {
            m_IsMoving = !m_IsMoving;

            if (SphereStateChanged != null)
            {
                SphereStateChanged(m_IsMoving);
            }
        }
    }
}


Don’t forget to attach main camera to the sphere script in the inspector.

Build the project for Windows Phone 8 and open the resulting Visual Studio solution.

Add a TextBlock XAML element to MainPage.xaml file:

Add sphere state changed event handling method. Remember, XAML can only be interacted with through the UI thread, so we use Dispatcher to execute our method there:

Finally, attach that handler method to our sphere state changed event which we declared in the script.

Result

Attachments

Windows Phone 8: Profiler
Windows Phone 8: Plugins