如何检查bool或调用Unity脚本中的函数在Windows应用程序解决方案方面

本文关键字:函数 Windows 方面 解决方案 应用程序 脚本 Unity 何检查 检查 调用 bool | 更新日期: 2023-09-27 18:09:40

我需要通过检查unity脚本中的布尔值来调用Windows Store应用程序端的函数。如何做到这一点,我使用这个代码,但它给出了错误。我只需要一个简单的解决方案,其中我检查在unity脚本中声明的bool在移植的windows store应用程序端调用函数

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);
        }
    }
}
}

完整的代码在这里

如何检查bool或调用Unity脚本中的函数在Windows应用程序解决方案方面

我理解你的问题的方式是,当某些事情发生在Unity端时,你想调用Windows Store应用端上的方法,对吗?

一个很好的方法是在你的Unity代码中添加一个事件,你的Win代码可以注册。在本例中,我将把您的事件命名为ButtonClicked

首先你需要一个静态类,事件将在其中。在Unity Assets文件夹中创建一个新的c#脚本并打开它。我把我的调用为StaticInterop。清除生成的代码,并使其如下:

public class StaticInterop
{
  public static event EventHandler ButtonClicked;
  public static void FireButtonClicked()
  {
    if (ButtonClicked != null)
    {
      ButtonClicked(null, null);
    }
  }
}
现在,在Unity中,无论何时发生这种情况(在这种情况下,当按钮被点击时),执行这行代码:
StaticInterop.FireButtonClicked();

这是Unity方面所做的一切。所以创建一个构建,并打开它创建的VS Windows Store应用程序项目。

在Win代码中,你现在可以像这样报名参加活动:

StaticInterop.ButtonClicked+= StaticInterop_ButtonClicked;

并声明该方法以使其运行:

void StaticInterop_ButtonClicked(object sender, EventArgs e)
{
// Do whatever you need here.
}
重要的是要注意StaticInterop静态类显示在您的Win代码中。这意味着你可以使用它在Unity和Win端之间传输任何内容。您甚至可以在类中有一个名为PauseGame()的方法,然后在Win端使用StaticInterop.PauseGame()运行该方法。