有人知道将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上做这个,因为工作室制作了上面的链接.
我们最近创建了一个资产,在"新"(> 4.6)Unity UI中以表格布局显示数据.我们的一些用户询问绘制调用性能,我们想知道在UI中改进绘制调用的选项(如果有的话).
所以上面的表格在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)的绘制调用量.真的吗?如果不是,那么我们能做些什么来减少我们桌子上的抽奖吗?
通过停用每个数据行上的自定义"度量"元素,我能够将绘制调用减少一个.它基本上是一个黑客的"文本"对象,但我只是用它来测量网格大小的单元格,它正在进行额外的绘制调用.测量功能实际上可以正常工作,GameObject已停用.
发现了很大的进步.我在上面提到我的Header/Footer/Body和ColumnOverlay都使用了mask元素.事实证明,我能够重构我的系统,在新的根级元素上包含一个Mask,并删除Header,Footer和ColumnOverlay上的Masks.现在我只在该根元素和Body上有一个Mask.
因此,每一行都包含底部边框线图像,以抵消它的兄弟姐妹.我想也许它正在打印文本元素的"顶部"并强制额外绘制.结果没有......事实并非如此.
此外...我的所有背景图像元素都没有定义精灵属性.他们只是使用"null"并应用了颜色.我想也许如果我创建了一个通用的"白色"精灵并将其应用于我的所有null Image对象,它可能会改进批处理并减少我的绘制调用.结果没有......事实并非如此.
如何将得分值从一个场景传递到另一个场景?
我尝试过以下方法:
场景一:
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) 如果您Random.Range()用于生成值,是否有任何方法可以排除范围内的某些值(例如:选择1到20之间的数字,但不是6到8之间的数字)?
在最近几周,我使用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)
幕后发生了什么?团结是否利用"动态技巧"或什么?
当我导入 GoogleMobileAds 包以将 AdMob 广告插入我的项目时,问题出现了。我尝试使用本指南https://null-code.ru/solution/157-reshenie-exception-jar-not-found-windows.html在环境变量中创建 2 个局部变量“JAVA_HOME”和“PATH” ,但它对我没有帮助。
如您所知,OpenCV是一个非常有用的库,可以让您在计算机视觉中做出惊人而强大的功能.所以,我通过一个很好的时间弄清楚如何使用它在Unity3d,我有很多的问题,并在网络搜索,我发现了几个建议,但没有一个为我工作.
有没有一种简单的方法来创建类似以下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可能......?
谢谢.
我有一个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,而不是相反.
在现代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)