Tag: unity3d

将字节数组从C ++非托管dll传递到C#unity

我试图将字节数组从我的非托管c ++ dll返回到c#unity。 非常感谢您提前花时间来帮助> <我在团结中对DLL非常新,所以我非常困惑2种语言甚至可以合作。 CPP 问题出在这里,我已经完成了我的计算,但是我很难找到一种方法将数据格式返回给c#。 目前,字节数组包含颜色代码,例如RGBA(223,124,23,255,212,143,234,255)并重复 #include “WebcamDLL.h” #include extern “C” { int adjustBrightnesss(unsigned char* bytes, int sizeOfArray) { std::vector myvector; int alphaP = 0; for (int i = 0; i < sizeOfArray; i++) { switch (alphaP) { case 0: case 1: case 2: myvector[i] = bytes[i] / 2; alphaP++; break; case 3: […]

从Unity3D代码启动android服务

在我的用于android的Unity3D应用程序中,我需要启动一个服务,它将在后台运行。 我无法弄清楚我该怎么做。 必须在活动上调用方法startService() ,但我不知道如何将当前的unity活动从unity脚本传递到我的android插件。 我还没有找到任何方法来获取静态方法中的活动并在其中运行startService() 。 据我了解序列,我需要获得主要的Unity3D活动并从中启动服务。 我的class级应该叫服务。 public final class StatusCheckStarter { public static void StartCheckerService() { startService(new Intent(this, CheckService.class)); } } 这段代码不起作用,因为“无法解析方法startService”而且我没有任何东西要传递给这个参数。 我需要获得当前的活动。

将OpenCV Mat转换为Texture2D?

元语境: 我正在开发一款利用opencv替代普通输入(键盘,鼠标等)的游戏。 我通过DllImports在C ++中使用Unity3D的C#脚本和opencv。 我的目标是在我的游戏中创建一个来自opencv的图像。 代码背景: 正如通常在OpenCV中所做的那样,我使用Mat来表示我的图像。 这是我导出图像字节的方式: cv::Mat _currentFrame; … extern “C” byte * EXPORT GetRawImage() { return _currentFrame.data; } 这就是我从C#导入的方式: [DllImport (“ImageInputInterface”)] private static extern IntPtr GetRawImage (); … public static void GetRawImageBytes (ref byte[] result, int arrayLength) { IntPtr a = GetRawImage (); Marshal.Copy(a, result, 0, arrayLength); FreeBuffer(a); } 从我理解OpenCV的方式来看,我希望在uchar指针中序列化时,以这种方式构造字节数组: b1, g1, […]

如何让游戏玩法忽略Unity3D中UI按钮的点击?

我正在尝试创建一个3D点击以在Unity3D中移动游戏。 我添加了一个UI Button (使用UnityEngine.UI ),我想最终点击以打开和关闭运行。 但是,单击Button实际上似乎是点击进入场景(在我的情况下是NavMeshAgent导航)并导致我的播放器移动到其他位置。 如何禁用光线投射以单击UI按钮或以某种方式让UI捕获自己的事件? 我一直在使用典型的Unity3D代码让用户进入游戏玩法等 if (Input.GetMouseButtonDown(0)) { 如果我尝试这种方法也一样 if( Input.touches.Length > 0 ) { if ( Input.touches[0].phase == TouchPhase.Began ) { 在iOS,Android和桌面上似乎就是这种情况。 这似乎是一个基本问题,点击UI( UnityEngine.UI.Button等)似乎落入游戏玩法。

捕获Unity中的所有exception

我在应用程序商店中有一个Unity手机游戏,我有一个function,可以将玩家的电子邮件发送到我的服务器,通知我发生的事情,这不应该发生。 如果我写的try失败了,我会给自己发一封电子邮件,看看肯定有错误。 是否有可能构建类似OnException处理程序的东西,它会向我发送每个发生的exception的电子邮件,包括我没写的代码? 有些例外可能来自我使用的插件,所以我希望有一些Listener,当任何类型的exception被调用时它会发生。 那可能吗?

在Unity中,如何将值从一个脚本传递到另一个脚本?

在Unity中,我希望一个对象具有一个所有其他对象都可以访问的下降速度变量。 出于各种原因,我无法使用内置的引力来实现我的目标。 如何重复访问一个对象中的变量,以便在更新时从另一个对象获取更新的变量?

我是否可以在不支付Unity多人游戏服务的情况下使用Unity网络HLAPI?

我看到了Unity的多人游戏服务页面 ,我完全糊涂了: 我是否可以在已发布的游戏中使用Unity的高级网络API (NetworkManager / NetworkManagerHUD)而无需支付Unity Matchmaker和中继服务器(无论这些是什么)? 我有自己的基于云的VM,我想在其上运行专用服务器。 我的项目只是一个小游戏,我会和我的朋友玩(没有商业或大规模)。 我想在我的VM上以专用服务器模式运行该游戏的已发布副本,并让我的朋友运行他们发布的客户端副本并通过NetworkManager连接到服务器。 我可以免费吗? 我不介意我的朋友是否必须使用NetworkManagerHUD在他们的游戏副本中手动输入服务器的IP和端口。 他们这样做会被视为“CCU”(Unity Personal限制为20)吗? 那会使用Unity Matchmaker带宽(0.49美元/ GB,甚至不适用于Unity Personal)吗? 任何澄清将不胜感激! 🙂

使用屏幕大小缩放GUI.TextArea

我正在尝试扩展GUI.TextArea。 代码块在OnGui函数中工作。 但是当我改变屏幕尺寸时,textArea将不会处于正确的位置和大小。 第一屏尺寸 第二屏尺寸 是否有任何解决方案,如Canvas.ScaleMode.ScaleToFit或我应该重新创建GUI.TextArea? 编辑:我在canvas中使用按钮,一些图像和文本,并使用canvasScaler脚本轻松缩放它们。 但是文本对象不包含多行文本,因此我使用gui创建textarea以显示多行文本。

在非MonoBehaviour类中使用coroutine

你怎么能在一个非Monobehaviour阶级的实例中通过Monobehaviour? 我找到了这个链接 ,TonyLi提到你可以通过一个Monobehaviour来开始和停止一个类的实例中的协同程序,但他没有说明你怎么能这样做。 他做了这个theEvent.StartEvent(myMonoBehaviour); 但是他并没有表明他从哪里获得了我的神经行为。 我在互联网上环顾四周,但我似乎无法找到。 编辑 这是我想要做的。 我想在一个类的实例中运行一个协同程序。 我也希望能够在类的实例中停止协同程序。 我想这样做,以便我的场景中没有任何具有大型管理器的对象,以及我可以将代码重用于我想以这种方式打乒乓的任何对象。 代码在一个方向上移动一个Gameobject,然后rest并向另一个方向移动它并再次rest等等。但我不能从课外开始协同程序。 using UnityEngine; using System.Collections; using UnityEngine.UI; [RequireComponent (typeof(Image))] public class SpecialBar : MonoBehaviour { public float rangeX; public float breakTime; public float step; float startProgress = 0.5f; PingPongGameObject pingPonger; Color[] teamColors = new Color[]{new Color(255,136,0),new Color(0,170,255)}; void Start() { for(int i = 0; […]

实例化地形区域内的对象

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Teleport : MonoBehaviour { public Vector3 terrainArea; public float spinSpeed = 2.0f; public int cloneTeleportations; public GameObject prefab; private bool rotate = false; private bool exited = false; private Transform[] teleportations; private Random rnd = new Random(); private void Start() { GameObject go = GameObject.Find(“Terrain”); Terrain terrain […]