我安装了最新版本SDK (API 16)并获得了最新的ADT.我现在在logcat中看到这些消息,我很确定,我以前没见过.有没有人对此有所了解?
06-29 23:11:17.796:I/Choreographer(691):跳过647帧!应用程序可能在其主线程上做了太多工作.
我做了一个搜索,发现了这个链接:http: //developer.android.com/reference/android/view/Choreographer.html.这是API 16中引入的新类.
我需要知道如何确定我的应用程序可能正在做什么"太多工作",因为我的所有处理都是在AsyncTasks中完成的.
有人知道将Android与Unity Studio集成吗?(我将解释)
我在Unity(OSX Maverics的4.3.x)中创建了一个简单的场景进行测试.有一个3D对象,没有别的.
我在这里使用Stackoverflow解释在XCode中执行此操作,并在此处发布我的完整代码(触摸UIButton并在UIView或UIViewController上显示Unity)以显示它非常简单.
但是现在,我需要在Android Studio上做同样的事情(我安装了,我可以将项目从Unity导出到Android)
我唯一知道的是AndroidManifest.xml和文件是"res/layout /" ).xml"在Android Studio上创建项目时,屏幕上的第一个(读取)和(显示)布局的文件.
当您从Unity打开生成的项目时,您拥有的唯一XML就是AndroidManifest.
所以我迷路了.由于第三方网站(http://www.rbcafe.com/Softwares/Unity/Documentation/Manual/android-GettingStarted.html)的文档仅提及项目中不存在的Unity Eclipse和JAVA文件,因此我更失落.
在Objective-C中,您创建somethingDelegate.mm和.h并插入"一行代码"并准备就绪.在Android中似乎并不像这篇官方文档那样简单(http://docs.unity3d.com/Manual/PluginsForAndroid.html).
有人已经在Android Studio中做过这个并且可以帮助我吗?
提前致谢.
**编辑赏金:**
需要创建3个视图:
1 - 带2个按钮的主视图;
2 - 一个按钮转到第二个视图;
3 - 其他按钮进入Unity View;
必须有一个简单的方法在Android上做这个,因为工作室制作了上面的链接.
我已经成为一名SO成员了一段时间,但从未真正问过一个问题,所以这里......
我正在尝试制作一个包含两项活动的Android应用.第一个是菜单屏幕(使用标准的Android UI元素),其中有一个用于打开游戏活动的按钮.游戏活动将包含一些标准的Android UI元素和包含Unity 3D场景的FrameLayout.
我正在使用Unity 5和Eclipse Luna.
我用一个简单的按钮创建菜单屏幕,开始第二个活动.我已经按照本教程设法将我的Unity场景嵌入到我的第二个活动中.到目前为止一切都好...
我第一次开始玩游戏活动它工作正常(我可以看到嵌入在我的FrameLayout中的Unity场景),但如果我关闭活动(返回菜单活动)然后再次启动游戏活动我得到此错误.. .
Activity has leaked IntentReceiver com.unity3d.player.UnityPlayer$17@41866de0 that was originally registered here. Are you missing a call to unregisterReceiver()?
Run Code Online (Sandbox Code Playgroud)
我在线搜索了很多,看起来我需要在onPause或onDestroy上调用类似的东西;
m_UnityPlayer.currentActivity.unregisterReceiver(receiver);
Run Code Online (Sandbox Code Playgroud)
...但我不知道接收器是什么,所以我无法在我的unregisterReceiver调用中引用它.我已经尝试创建一个BroadcastReceiver,注册它然后取消注册onPause但它没有任何区别.
我在团结论坛上找到了一个帖子,询问了完全相同的问题但是,令人沮丧的是,它没有答案(Unity论坛上的很多问题似乎都没有答案,这就是我带着这个问题来到这里的原因).
我也试过在onDestroy中调用这个方法但是当我关闭游戏活动时它实际上会退出我的整个应用程序.
m_UnityPlayer.quit();
Run Code Online (Sandbox Code Playgroud)
这是我的游戏活动的代码(为清楚起见,我删除了导入);
public class MyEmbeddedUnityActivity extends Activity {
private UnityPlayer m_UnityPlayer;
IntentFilter filter = new IntentFilter("");
private BroadcastReceiver bRec = new BroadcastReceiver() {
@Override
public void onReceive(Context context, …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一款适用于Android的小型AR应用程序,并且面临将Unity3d集成到活动中的问题.这些要求表明我需要能够呈现一些Android UI - 例如菜单和操作栏 - 以及将在检测到目标时显示在Unity3d中创建的模型的摄像机视图.
我找到了一个帮助很多的链接:Unity3d论坛.其中一个用户问我现在有同样的问题,但从来没有得到任何正确的答案 - 这就是我在这里发帖的原因.
问题:
我有一个小的Unity3d项目,它本质上是一个白色立方体,我试图在我的一个Android活动中显示它.当活动setContentView()在其onCreate()方法中没有时,模型看起来很好,但我不能在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>
Run Code Online (Sandbox Code Playgroud)
第一版活动实施:
public class HomeActivity extends UnityPlayerActivity {
UnityPlayer unityPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Run Code Online (Sandbox Code Playgroud)
结果截图: 
活动实施的第二版:
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); …Run Code Online (Sandbox Code Playgroud) 我想在android布局中添加unityview作为子视图.我在android xml文件中创建相对布局,并将unityview添加到relativelayout.但是统一视图在相对布局的左下方显示为小图像.
黑色部分是我的相对布局,但统一视图不占用进入相对布局.
代码如下:
public class MainActivity extends UnityPlayerActivity {
public static Context mContext;
private Handler handler=new Handler();
private UnityPlayer m_UnityPlayer;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
mContext = this;
m_UnityPlayer = new UnityPlayer(this);
int glesMode = m_UnityPlayer.getSettings().getInt("gles_mode", 1);
boolean trueColor8888 = false;
m_UnityPlayer.init(glesMode, trueColor8888);
setContentView(R.layout.activity_main);
//This is my relative layout
RelativeLayout layout = (RelativeLayout) findViewById(R.id.relativelayout2);
//Relativelayout width is 750dp and height is 640dp.
LayoutParams lp = new LayoutParams (750, 640);
//Iam adding unityview to layout here
layout.addView(m_UnityPlayer.getView(), 0, …Run Code Online (Sandbox Code Playgroud) 我目前正在处理的应用程序使用导航抽屉,每个选项卡在活动中打开一个新片段(替换旧片段).
其中一个片段是Unity3D场景.基本上,我做的是:
将此UnityPlayerNativeActivity转换为Fragment,如下面的代码所示.我还改变了Manifest中的一些小问题.
import com.unity3d.player.*;
import android.app.Fragment;
import android.app.NativeActivity;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
public class UnityPlayerNativeFragment extends Fragment
{
protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code
private static final String ARG_SECTION_NUMBER = "section_number";
public static UnityPlayerNativeFragment newInstance(int sectionNumber) {
UnityPlayerNativeFragment fragment = new UnityPlayerNativeFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
// …Run Code Online (Sandbox Code Playgroud)调用pthread_create函数后,我收到下一条消息:
W/libc(26409):pthread_create sched_setscheduler调用失败:不允许操作
用于创建线程的代码是:
pthread_attr_t threadAttr;
int ret = pthread_attr_init(&threadAttr);
//code to check ret - it's 0
size_t guard_size = 0;
pthread_attr_getguardsize(&threadAttr, &guard_size);
ret = pthread_attr_setstacksize(&threadAttr, myStackSize + guard_size);
//code to check ret - it's 0
ret = pthread_attr_setdetachstate(&threadAttr, PTHREAD_CREATE_DETACHED);
//code to check ret - it's 0
ret = pthread_attr_setschedpolicy(&threadAttr, SCHED_FIFO);
//code to check ret - it's 0
sched_param schedParam;
schedParam.sched_priority = myPriority; //it's 16
ret = pthread_attr_setschedparam(&threadAttr, &schedParam);
//code to check ret - it's 0
// Create …Run Code Online (Sandbox Code Playgroud)