博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中导入Unity项目,界面点击事件失去焦点问题
阅读量:4582 次
发布时间:2019-06-09

本文共 4657 字,大约阅读时间需要 15 分钟。

====================问题描述====================
1.将Unity中的项目导出成Android项目,再放入到Eclipse中,然后新建一个Android项目,以Unity那个项目为类库。
2.然后我开始写一个xml布局,布局中间是一个LinearLayout,上下分别是Button。LinearLayout用来放Unity里的内容。
现在遇到的问题是如果再Unity画面加载完成之前,按钮的点击事件是可以执行的。当Unity加载完成以后,按钮就失效了。根本点不了。是因为Unity盖住了整个屏幕还是占据了整个焦点?现在不知道是应该在Unity代码里面改还是在Android里面改,有大神知道么?
下面附上代码:
package com.t.t; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerNativeActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends UnityPlayerNativeActivity{
private LinearLayout unity; private Button round,right,left; private String Tag="Unity3D"; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //设置布局文件 setContentView(R.layout.test); //mUnityPlayer为一个全局的引用变量,而且已 经在父类中设置好了,所以直接拿来用就可以了 View playerView = mUnityPlayer.getView(); //将Unity的视图添加到我们为其准备的父容器中 unity = (LinearLayout) findViewById(R.id.unity); playerView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// TODO Auto-generated method stub Toast.makeText(MainActivity.this, "222222", Toast.LENGTH_LONG).show(); } }); unity.addView(playerView); round = (Button) findViewById(R.id.trun_round); round.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// TODO Auto-generated method stub UnityPlayer.UnitySendMessage("shouchengchangmaobing", "Answer", "3"); } }); left = (Button) findViewById(R.id.left); left.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// TODO Auto-generated method stub UnityPlayer.UnitySendMessage("shouchengchangmaobing", "Answer", "1"); } }); } }
package com.t.t; import com.unity3d.player.*; import android.app.NativeActivity; import android.content.res.Configuration; import android.graphics.PixelFormat; import android.os.Bundle; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.Window; import android.view.WindowManager; public class UnityPlayerNativeActivity extends NativeActivity {
protected UnityPlayer mUnityPlayer;// don't change the name of this variable; referenced from native code // Setup activity layout @Override 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); setContentView(mUnityPlayer); mUnityPlayer.requestFocus(); } // Quit Unity @Override protected void onDestroy () {
mUnityPlayer.quit(); super.onDestroy(); } // Pause Unity @Override protected void onPause() {
super.onPause(); mUnityPlayer.pause(); } // Resume Unity @Override protected void onResume() {
super.onResume(); mUnityPlayer.resume(); } // This ensures the layout will be correct. @Override public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); mUnityPlayer.configurationChanged(newConfig); } // Notify Unity of the focus change. @Override public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus); mUnityPlayer.windowFocusChanged(hasFocus); } // For some reason the multiple keyevent type is not supported by the ndk. // Force event injection by overriding dispatchKeyEvent(). @Override public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_MULTIPLE) return mUnityPlayer.injectEvent(event); return super.dispatchKeyEvent(event); } // Pass any events not handled by (unfocused) views straight to UnityPlayer @Override public boolean onKeyUp(int keyCode, KeyEvent event)     { return mUnityPlayer.injectEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event)   { return mUnityPlayer.injectEvent(event); } @Override public boolean onTouchEvent(MotionEvent event)          { return mUnityPlayer.injectEvent(event); } /*API12*/ public boolean onGenericMotionEvent(MotionEvent event)  { return mUnityPlayer.injectEvent(event); } }
  
          
          
       
          
        
====================解决方案1====================
Unity盖住了整个屏幕???
按钮可见能点击不?

转载于:https://www.cnblogs.com/yiguobei99/p/4000522.html

你可能感兴趣的文章
python安装.whl文件失败
查看>>
servlet的转发与重定向
查看>>
除了ROS, 机器人定位导航还有其他方案吗?
查看>>
【转】Win7系统下安装Ubuntu12.04(EasyBCD硬盘安装)--不错
查看>>
【转】嵌入式Linux文件系统启动脚本及分析
查看>>
【转】Android学习系列(1)--为App签名(为apk签名)
查看>>
4种控件自绘技术类型分析
查看>>
2017-2018-1 20155226《信息安全系统设计基础》第1周学习总结
查看>>
h3c dhcp snooping
查看>>
C++ STL
查看>>
Android入门:Handler简介与实例
查看>>
新的开始,Hello 2012~
查看>>
C#程序员快速上手Angular开发
查看>>
sendmessage和postmessage的区别
查看>>
【求助】NdisSend,自定义数据包发送失败?
查看>>
linux的相关问题
查看>>
codeforces 340D Bubble Sort Graph(dp,LIS)
查看>>
Oracle生产问题
查看>>
iOS设计模式 - 生成器
查看>>
关于fpga优化的set input delay 和 set output delay
查看>>