【问题标题】:Access Unity variables in eclipse在 Eclipse 中访问 Unity 变量
【发布时间】:2013-12-26 16:16:17
【问题描述】:

是否可以从 Eclipse 中的统一游戏中访问变量(例如高分)? 变量存储在统一脚本中,如下所示:

using Assets.Scripts.Events;
using Assets.Scripts.Utils;
using UnityEngine;

namespace Assets.Scripts
{
public class ScoreManager : CommandMonoBehaviour
{
    public int Score;

    public void Start()
    {
        Subscribe(GameEvents.BasketGotMovingObject, OnBasketGotMovingObject);
    }

    private void OnBasketGotMovingObject(GameEventArgs<MovingObject> args)
    {
        Score = Mathf.Max(0, Score + args.Value.BonusPoints);
        GameEvents.ScoreUpdated.Publish(new GameEventArgs<int>(Score));
    }
}
}

该项目已通过 Unity IDE 导出到“Google Android 项目”。

导出项目中的onCreate函数如下所示:

protected void onCreate (Bundle savedInstanceState)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);

        getWindow().takeSurface(null);
        setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
        getWindow().setFormat(PixelFormat.RGB_565);

        mUnityPlayer = new UnityPlayer(this);
        if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
            getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                   WindowManager.LayoutParams.FLAG_FULLSCREEN);

        int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
        boolean trueColor8888 = false;
        mUnityPlayer.init(glesMode, trueColor8888);

        View playerView = mUnityPlayer.getView();
        setContentView(playerView);
        playerView.requestFocus();
    }

只有一个“UnityPlayer”。 如何访问“int Score”等脚本变量?

【问题讨论】:

  • 标签 unity 用于 Microsoft Unity。请不要滥用它。

标签: android eclipse unity3d unityscript


【解决方案1】:

假设您已经在 eclipse 中打开了解决方案,请确保您获得了脚本所附加到的游戏对象的组件。你可以使用

var scoreManager = GameObject.FindOnbjectOfType(typeof(ScoreManager)) as ScoreManager;

如果您不知道 ScoreManager 脚本所属的对象。如果您确实知道 te 脚本所属的对象,则可以使用以下内容(将 obj 替换为实际名称)

var scoreManager = obj.GetComponent<ScoreManager>():

从那里你可以做

scoreManager.Score

我还假设您派生 ScoreManager 的类在某些时候派生自 MonoBehaviour,这是将脚本附加到场景中的游戏对象所需的类。

希望对你有帮助

【讨论】:

  • 抱歉,这是不可能的。但是,您可以通过创建插件来统一使用纯 Java 代码。但是,您将无法访问 Unity 的任何库。要在 java 中创建插件,您可以将此答案用作指南 answers.unity3d.com/questions/15308/…
  • 插件基本上是预编译代码(扩展名为 .dll)。 dll 文件必须放在 Assets 文件夹中创建的 Plugins 文件夹中。这些文件夹必须命名为“Plugins”并直接位于 Assets 文件夹中。要将包含已编译 Java 代码的文件的 .jar 文件转换为 Unity 理解插件所需的 .dll,请按照上面的链接进行操作,但是对于完全用 Java 制作 Unity 游戏,恐怕不是可能的。希望这会有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
相关资源
最近更新 更多