Tag: unity3d

如何使用EventSystem检测多个/重叠GameObjects?

我试图实现的目标:牙刷应该出现在用户点击BoxCollider A内的任何地方,包括BoxCollider B内的空间。 但显然在B内部点击将不会显示牙刷(OnPointerDown未被触发)。 我尝试过:改变图层的顺序。 用户点击盒子对撞机A后显示牙刷,但如果用户点击盒子对撞机B – 牙刷将不会显示,这意味着不会触发OnPointerDown 。 我认为这是因为一个BoxCollider2D在另一个BoxCollider2D重叠。 在我的案例B ,我认为这是罪魁祸首,但我不知道如何解决它,或者是否有另一种方法来实现OnPointerDown ? 我正在使用Perspective相机。 但是在这个场景中,所有元素都在相同的z position ,即0.是否可以在每个相应的BoxCollider2D触发IPointerHander事件? DragableObject.cs 该脚本附在牙刷上。 BoxCollider2D A也属于牙刷。 public void OnPointerDown(PointerEventData eventData) { Debug.Log(“pointer down”); if (GetComponent() == null) return; currentObject = GetComponent(); MeshRenderer renderer = GetComponent(); if (ShowOnTouch) ShowObject(); // Store original state originalPosition = transform.position; originalOrderLayer = renderer.sortingOrder; // Snap […]

为什么相机在Unity3D中围绕z轴旋转?

我在Unity3D中有一个主摄像头 ,我想根据鼠标输入进行旋转,因此它可以作为第一人称video游戏,根据您想要查看的位置移动鼠标。 摄像机的起始值(Unity中的“检查器”选项卡中的“变换”选项卡)为: 位置 :X = -1,Y = 1,Z = -11。 旋转 :X = 0,Y = 0,Z = 0。 比例 :X = 1,Y = 1,Z = 1。 我为主摄像头添加了一个脚本组件。 它是以下类: using UnityEngine; using System.Collections; public class CameraMove : MonoBehaviour { float deltaRotation = 50f; // Use this for initialization void Start () { } // Update […]

如何为Android应用程序统一访问移动设备后退按钮

我正在构建一个带有菜单场景和许多其他场景的VR应用程序。当用户点击手机后退按钮(android)时,我想从任何其他场景回到菜单场景..这是什么脚本和我应该把脚本放在哪里?

使用Unity中的脚本更改UI图像c#

我想以随机顺序更改UI图像 。 我在UI(canvas)中有一个包含Image组件的游戏对象 ,它最初有空图像 。 我附加了一个脚本(gameobject)来改变运行时的图像。 using UnityEngine; using System.Collections; using UnityEngine.UI; public class changeImg : MonoBehaviour { public Sprite sprite1; public Sprite sprite2; public Sprite sprite3; void Start() { ChangeImg(); } void ChangeImg() { int rand=Random.Range(0,3); if(rand==0) { gameObject.GetComponent ().sprite = sprite1; //gameObject.GetComponent ().sprite = sprite1; } else if(rand==1) { gameObject.GetComponent ().sprite = sprite2; […]

使用打印机打印Unity3D游戏统计信息

对于博物馆,我们正在制作一系列不同的迷你游戏和一个maingame,它们使用迷你游戏的结果作为资源。 当访客离开博物馆时,他应该能够打印出他的游戏动作摘要,主要是统计数据。 他应该能够打印它的工作站正在运行Unity3D应用程序。 统计信息包含文本以及着色的图形元素(饼图)。 有没有办法从Unity3D应用程序中打印此类信息? 或者我应该专注于另一种解决方案?

统一。 一段时间后的函数调用

如何在一段时间后使对象不可见(或只是删除)? 使用NGUI。 我的例子(改变): public class scriptFlashingPressStart : MonoBehaviour { public GameObject off_Logo; public float dead_logo = 1.5f; void OffLogo() { off_Logo.SetActive(false); } //function onclick button //remove item after a certain time after pressing ??? void press_start() { InvokeRepeating(“OffLogo”, dead_logo , …); } }

使用套接字时发送当前值的Unity延迟

Visual Studio中的client.cs。 private void SendToServer(string HeartRate) { SetHRTest(HeartRate); try { s = client.GetStream(); StreamReader sr = new StreamReader(s); StreamWriter sw = new StreamWriter(s); sw.AutoFlush = true; sw.WriteLine(HeartRate); } finally { if(Environment.HasShutdownStarted) { s.Close(); client.Close(); } } } Unity中的server.cs using UnityEngine; using System.Collections; using System.Net.Sockets; using System.IO; using System.Net; using System.Threading; public class Server { public […]

从VideoPlayer源URL访问维度(宽度/高度)

我正在开发一个Unity项目,要求我下载video文件(mp4格式)并使用VideoPlayer组件播放它。 因为文件是在运行时下载的,所以我实际上必须通过URL将其“流”到其下载的位置,而不是将其作为VideoClip加载。 要准确调整video将播放的目标RenderTexture和GameObject的大小,我需要video文件本身的尺寸。 因为它不是VideoClip我不能使用: VideoClip clip = videoPlayer.clip; float videoWidth = clip.width; float videoHeight = clip.height; 因为我使用的是源URL而不是VideoClip,所以这将返回null。 我可以直接从文件中获取video尺寸吗?

程序问题从Unity转到HoloLens – 无法从’string’转换为’System.IO.Stream’

我有一个使用C#在Unity中编写的程序,它初始化一个新的StreamReader并继续从我存储在Unity资源文件夹中的文本文件中读取文本数据。 当我在Unity中单击播放时,一切正常,并且文本被完美地读取和显示。 但是,当我尝试构建它以便通过HoloLens模拟器(平台:Windows Store,SDK:Universal 10,构建和运行:本地机器)运行它时,我收到错误:错误CS1503:参数1:无法转换从’string’到’System.IO.Stream’。 我不明白为什么这个错误甚至首先出现,因为StreamReader的构造函数有一个接受字符串参数的重载。 我的代码如下: string metadata = String.Format(“/Resources/…/metadata.txt”, list); if (File.Exists(Application.dataPath + metadata)) { using (StreamReader sr = new StreamReader(Application.dataPath + metadata)) { // …. } }

C#在其他线程上执行代码

我的应用程序中的线程有问题。 我有一个multithreading客户端/服务器应用程序。 我也在为Unity3d使用C#MonoDevelop。 不确定答案是否有任何不同。 我会尝试解释我的问题所在: Unity适用于单个线程。 因此,如果我想实例化一个使用Unity的抽象类ScriptableObject的对象,那么必须在Unity运行的主线程上完成。 但是我的服务器套接字为每个连接的客户端生成一个线程,因此可以将传入的数据处理为异步。 接收到的数据在OnDataReceived()方法中处理(在自己的线程上运行) 这里的问题是,我无法在OnDataReceived()线程内创建一个Player对象的实例。 因为我的Player对象inheritance自ScriptableObject 。 这意味着应该在主Unity线程上创建此对象。 但我不知道怎么做…有没有办法切换回主线程,所以我仍然可以在OnDataReceived()方法中创建一个Player对象?