我目前正在为Android开发一个小型AR应用程序,遇到了将Unity3d集成到活动中的问题。要求指明我需要能够呈现一些Android UI - 例如菜单和操作栏 - 以及一个相机视图,当检测到目标时会显示在Unity3d中创建的模型。
我找到了一个帮助我很多的链接:Unity3d论坛。那里的一个用户提出了我现在要问的同样的问题,但从来没有得到过任何适当的答案,这就是我在这里发布的原因。
问题:
我有一个小的Unity3d项目,本质上是一个白色立方体,并尝试在我的一个Android活动中显示它。当活动的
当我添加了
XML文件:
我找到了一个帮助我很多的链接:Unity3d论坛。那里的一个用户提出了我现在要问的同样的问题,但从来没有得到过任何适当的答案,这就是我在这里发布的原因。
问题:
我有一个小的Unity3d项目,本质上是一个白色立方体,并尝试在我的一个Android活动中显示它。当活动的
onCreate()
方法中没有setContentView()
时,模型看起来很好,但是我无法在XML文件中指定我的布局。当我添加了
setContentView()
方法时,我可以看到立方体,但它非常小,并且似乎没有任何方法可以使其改变大小。XML文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/unityView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
活动实现的第一版:
public class HomeActivity extends UnityPlayerActivity {
UnityPlayer unityPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
以下是截图:
活动实现的第二个版本:
public class HomeActivity extends UnityPlayerActivity {
UnityPlayer unityPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
unityPlayer = new UnityPlayer(this);
int glesMode = unityPlayer.getSettings().getInt("gles_mode", 1);
unityPlayer.init(glesMode, false);
FrameLayout layout = (FrameLayout) findViewById(R.id.unityView);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
layout.addView(unityPlayer.getView(), 0, lp);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
unityPlayer.windowFocusChanged(hasFocus);
}
}
下面给出的是截图:
有人能够解释一下为什么会出现这种情况,以及如何修复它吗?