标签: unity-game-engine

Unity3D和Android Studio集成

有人知道将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上做这个,因为工作室制作了上面的链接.

java xml android unity-game-engine android-studio

17
推荐指数
2
解决办法
5万
查看次数

Unity3D UGUI(又名"新UI")绘制调用优化

我们最近创建了一个资产,在"新"(> 4.6)Unity UI中以表格布局显示数据.我们的一些用户询问绘制调用性能,我们想知道在UI中改进绘制调用的选项(如果有的话).

表用法GIF

所以上面的表格在19次抽签中非常一致......

在此输入图像描述

它可以在任何ipad2级别以上的版本上运行良好,但是Unity dev(可以理解)讨厌绘制调用,所以我们希望尽可能地减少这个数字.

您可以在上面的屏幕截图中看到我们为表格创建的层次结构.我们正在为Header/Footer/Body和ColumnOverlay使用蒙版.每个Unity,看起来每个Mask至少需要2次绘制:

http://forum.unity3d.com/threads/unity-4-6-ui-mask-component-takes-2-draw-calls.279840/

此外,我们显然使用一堆Unity UI Text和Sprite元素来绘制所有内容.表格布局的基本特性几乎意味着Sprite和Text对象之间存在多个层次(单元格背景之上的单元格数据等).Unity dev似乎说,当发生这种情况时,根本没有办法不进行多次绘制调用,因为引擎需要每个"层"...期间进行绘制.

http://forum.unity3d.com/threads/solved-new-ugui-and-too-many-draw-calls.266631/

所以...似乎只要你在Unity UI中有一个非平凡的UI布局,你几乎可以保证有一个非平凡(10-20)的绘制调用量.真的吗?如果不是,那么我们能做些什么来减少我们桌子上的抽奖吗?

更新1:

通过停用每个数据行上的自定义"度量"元素,我能够将绘制调用减少一个.它基本上是一个黑客的"文本"对象,但我只是用它来测量网格大小的单元格,它正在进行额外的绘制调用.测量功能实际上可以正常工作,GameObject已停用.

当前的抽奖电话== 18

更新2:

发现了很大的进步.我在上面提到我的Header/Footer/Body和ColumnOverlay都使用了mask元素.事实证明,我能够重构我的系统,在新的根级元素上包含一个Mask,并删除Header,Footer和ColumnOverlay上的Masks.现在我只在该根元素和Body上有一个Mask.

面具改进

当前的抽奖调用== 13

更新3 [失败]:

因此,每一行都包含底部边框线图像,以抵消它的兄弟姐妹.我想也许它正在打印文本元素的"顶部"并强制额外绘制.结果没有......事实并非如此.

此外...我的所有背景图像元素都没有定义精灵属性.他们只是使用"null"并应用了颜色.我想也许如果我创建了一个通用的"白色"精灵并将其应用于我的所有null Image对象,它可能会改进批处理并减少我的绘制调用.结果没有......事实并非如此.

当前的抽奖调用== 13

unity-game-engine

17
推荐指数
1
解决办法
6688
查看次数

Unity - 在场景之间传递数据

如何将得分值从一个场景传递到另一个场景?

我尝试过以下方法:

场景一:

void Start () {
    score = 0;
    updateScoreView ();
    StartCoroutine (DelayLoadlevel(20));
}

public void updateScoreView(){
    score_text.text = "The Score: "+ score;
}

public void AddNewScore(int NewscoreValue){
    score = score + NewscoreValue;
    updateScoreView ();
}

IEnumerator DelayLoadlevel(float seconds){        
    yield return new WaitForSeconds(10);
    secondsLeft = seconds;
    loadingStart = true;
    do {        
        yield return new WaitForSeconds(1);
    } while(--secondsLeft >0);

    // here I should store my last score before move to level two
    PlayerPrefs.SetInt ("player_score", score);
    Application.LoadLevel (2);
}
Run Code Online (Sandbox Code Playgroud)

场景二:

public …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine virtual-reality

17
推荐指数
4
解决办法
3万
查看次数

从Random.Range()中排除值?

如果您Random.Range()用于生成值,是否有任何方法可以排除范围内的某些值(例如:选择1到20之间的数字,但不是6到8之间的数字)?

c# random unity-game-engine

17
推荐指数
3
解决办法
6253
查看次数

Unity3d中的c#方法覆盖

在最近几周,我使用c#作为脚本语言使用Unity3d.我从来没有在c#和Unity3d之前使用过,我试图理解方法覆盖在Unity框架中是如何工作的.让我感到奇怪的是,我可以扩展基类MonoBehavior并重写方法Start (),Update ()等等,而不必使用override关键字,编译器也不会抱怨它!相反,在"普通"C#程序中,我必须使用override关键字,否则我会收到编译器警告.例如:

public class BaseClass {
    public virtual void MyMethod () {
        Console.WriteLine("BaseClass.MyMethod()");
    }
}

public class SubClass : BaseClass {
    public override void MyMethod () {
        Console.WriteLine("SubClass.MyMethod()");
    }
}

class Program {
    static void Main ()  {
        SubClass obj = new SubClass ();
        obj.MyMethod ();
    }
}
Run Code Online (Sandbox Code Playgroud)

而在Unity中,我可以简单地做到:

class PlayerController : MonoBehaviour {
    void Update () {
        // code...
    }
}
Run Code Online (Sandbox Code Playgroud)

幕后发生了什么?团结是否利用"动态技巧"或什么?

c# unity-game-engine

17
推荐指数
1
解决办法
2822
查看次数

如何在unity3d中修复“JAVA_HOME环境引用目录”

我在此屏幕截图中显示了一个问题: https://imgur.com/a/VGHrpVV

当我导入 GoogleMobileAds 包以将 AdMob 广告插入我的项目时,问题出现了。我尝试使用本指南https://null-code.ru/solution/157-reshenie-exception-jar-not-found-windows.html在环境变量中创建 2 个局部变量“JAVA_HOME”和“PATH” ,但它对我没有帮助。

c# java build unity-game-engine admob

17
推荐指数
3
解决办法
2万
查看次数

Unity中的OpenCV(EMGUCV包装器)集成

如您所知,OpenCV是一个非常有用的库,可以让您在计算机视觉中做出惊人而强大的功能.所以,我通过一个很好的时间弄清楚如何使用它在Unity3d,我有很多的问题,并在网络搜索,我发现了几个建议,但没有一个为我工作.

  • 我正在使用Unity Pro 4.0
  • 此版本的Emgu CV(emgucv-windows-universal-gpu 2.4.9.1847)
  • 我对团结项目的目标是:windows而不是web player

opencv unity-game-engine emgucv opencvsharp

16
推荐指数
1
解决办法
1万
查看次数

C#中的Javascript对象

有没有一种简单的方法来创建类似以下JS代码:

var players = [
    {name:"Joe",score:25,color:"red",attribs:[0,1,2,3,4]},
    {name:"Jenny",score:1,color:"black",attribs:[4,3,2,1,0]}
];
Run Code Online (Sandbox Code Playgroud)

C#(Unity 3d)?

我已经查看了List,Dictionary和ArrayList,但是所有内容都是如此......不灵活且过于复杂......

这里的主要目标是有一些灵活的东西,可以从许多其他地方访问,而不需要记住数组索引,变量类型等.可能无法在C#中完成...但是相当接近的东西应该是足够.ArrayList可能......?

谢谢.

javascript c# unity-game-engine

16
推荐指数
1
解决办法
1万
查看次数

获取有效的JNIEnv指针

我有一个C++ DLL,我想通过将函数导出到C#来在Unity中使用.Unity项目在Android设备上运行,C++代码使用java.要初始化C++,我需要先调用以下函数:

void api_initialize(JNIEnv* env, jobject* app_context, jobject* class_loader) {

    JavaVM* vm = nullptr;
    env->GetJavaVM(&vm);
    if (!vm) {
      return;
    }

    //Do other proprietary things
}
Run Code Online (Sandbox Code Playgroud)

在Unity中,我有以下导出的Dll函数

    [DllImport (dllName)]
    private static extern void api_initialize (IntPtr java_env, IntPtr app_context, IntPtr class_loader);
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在我的C#类中获取JNIEnv指针然后作为参数传递给此函数?

我不是这个API的创建者,也没有修改它的权限,所以我需要从JNIEnv获取JavaVM,而不是相反.

java dll java-native-interface android unity-game-engine

16
推荐指数
1
解决办法
1554
查看次数

在现代Unity3D中捏和其他多指手势?

在现代Unity3D中,我们使用IPointerDownHandler系列调用.

关于IPointerDownHandler电话的家庭,

public class FingerMove:MonoBehaviour, IPointerDownHandler...
    {
    public void OnPointerDown (PointerEventData data)
        {
Run Code Online (Sandbox Code Playgroud)

当然,他们太棒了

处理单个触摸.

但是你如何以严肃的方式处理多种接触

你可以"自己动手"跟踪自己的触摸,但看起来令人难以置信的Unity会希望你做那些绝对基本的事情.(我的意思是 - 它是一个游戏引擎.当然,我也可以编写我自己的渲染和物理!)

这是一个基本上"牛仔编程"的例子,只是手工完成而没有软件工程.什么是真正的解决方案?

//
// example of programming a pinch (as well as swipes) using modern Unity
//
// here we are forced to track "by hand" in your own code
// how many fingers are down and which 
// fingers belong to you etc etc:
//

// pedagogic example code:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.EventSystems; …
Run Code Online (Sandbox Code Playgroud)

c# touch unity-game-engine

16
推荐指数
2
解决办法
4855
查看次数