Tag: unity3d

如何获得显示器/显示器分辨率

如您所知,监视器和显示器的制造具有一定的分辨率。 我需要获得显示器/显示器分辨率。 我不是说解决游戏窗口/全屏,我的意思是显示器/显示器的物理分辨率。 我需要它在Android和Windows上工作。 编辑: 我刚刚发现我正在寻找的是NATIVE RESOLUTION

随着时间的推移围绕枢轴点旋转GameObject

我使用以下代码旋转与另一个轴点相关的点: Vector3 RotatePointAroundPivot(Vector3 point, Vector3 pivot, Vector3 angles) { Vector3 dir = point – pivot; // get point direction relative to pivot dir = Quaternion.Euler(angles) * dir; // rotate it point = dir + pivot; // calculate rotated point return point; } 如何在特定的持续时间内旋转该点,比如使用协程5秒?

ActiveX初始化:AxHost.State对象

我正在尝试使用WinFormsHost-Control将Unity3D-ActiveX控件嵌入到WPF表单中。 实际上它在VS的属性窗口中设置路径时效果很好,但是在我的代码文件中设置它时它不会加载任何东西。 这是一个已知的控件问题,但我想我可以简单地复制表单设计器的创建代码并手动初始化它。 在查看初始化代码时,我注意到代码中没有src属性,但属性在属性窗口中使用。 手动设置属性不起作用(抛出错误)。 经过一些测试之后,我决定检查src属性的孔组件,但是src属性从未设置过,我甚至找不到路径的字符串。 最后的想法 我注意到src-path所在的位置只有一个:窗口表单设计器生成的资源,它是AxHost.State -type的一个对象。 题 如何创建一个有效的AxHost.State对象来初始化应该加载我指定的Unity3D文件的Unity3D-ActiveX控件?

在背景中加载新场景

我正在创建一个针对Samsung Gear VR的Unity应用程序。 我目前有两个场景: 最初的一幕 第二个场景,数据量很大(加载场景需要太多时间)。 从第一个场景开始,我想在后台加载第二个场景,并在加载后切换到它。 当新场景在后台加载时,用户应该保持移动头部以查看VR环境的任何部分的能力。 我正在使用SceneManager.LoadSceneAsync但它无法正常工作: // … StartCoroutiune(loadScene()); // … IEnumerator loadScene(){ AsyncOperation async = SceneManager.LoadAsyncScene(“Scene”, LoadSceneMode.Single); async.allowSceneActivation = false; while(async.progress < 0.9f){ progressText.text = async.progress+""; } while(!async.isDone){ yield return null; } async.allowSceneActivation = true; } 使用该代码,场景永远不会改变。 我试过这个典型的SceneManager.LoadScene(“name”)在这种情况下30秒后场景会正确改变。

Unity 5.3 – 输入字段在按下时不会检测到第一个“返回”键

我必须双按“返回”键才能提交值! 它工作得很好,就像2个小时前一样(我只需按回一次),但后来我重新启动了Unity,现在我需要双击“return”来提交值。 更新#2 我有一个脚本附加到持有输入字段的canvas。 代码如下: – public class Example: MonoBehaviour { public InputField inputField; void Start () { } void Update () { HandleUserInput (); } void HandleUserInput() { if (inputField.isFocused && inputField.text != “” && (Input.GetKey (KeyCode.Return) || Input.GetKey(KeyCode.KeypadEnter))) { Debug.Log (“Pressed”); //Do stuff inputField.text = “”; //Clear Inputfield text inputField.ActivateInputField(); //Re-focus on the […]

Unity 5在圆形或椭圆形路径(轨道)中移动行星

我有: void Update () { transform.RotateAround(transform.parent.position, new Vector3(0, 1, 0), orbitSpeed * Time.deltaTime); } 这给了我一个非常基本的圆形轨道。 我需要做些什么来获得变化的椭圆轨道(每个恒星随机生成行星,所以我也想给它们随机轨道路径)?

从脚本中删除组件

有没有办法使用脚本从Gameobject中删除组件? 例如: 我通过脚本将FixedJoint添加到播放器,将对象连接到它(用于抓取),当我放下它时我想删除FixedJoint(因为,我不能只是“禁用”关节)。 我该怎么做?

保存/加载Unity3d

我试图在每次玩家到达门户时保存游戏,然后当游戏停止并且玩家想要再玩时,他可以按下startmenu上的继续按钮以从他上次解锁的级别开始。 这是教程: http : //unity3d.com/learn/tutorials/modules/beginner/live-training-archive/persistence-data-saving-loading 这是门户网站上应该保存游戏的脚本之一: using UnityEngine; using System.Collections; using System; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class Saving : MonoBehaviour { void OnTriggerEnter( Collider other) { if(other.gameObject.tag == “Player”) { GameControl.control.levelcount += 1; GameControl.control.Save(); } } } 没有错误。 这是继续按钮的脚本: using UnityEngine; using System.Collections; using System; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class ContinueCS : MonoBehaviour […]

如何在Unity3D输入字段UI组件中使用“On Value Change”

我正在学习如何使用Unity3d的教程,我已经走到了尽头。 我相信在较新版本的Unity中发生了一些变化,因为教程看起来像我正在做的那样工作得很好。 我有一个输入字段UI组件,我想在每次更改时调用C#函数。 根据教程,我只需要使用输入字段(脚本)的“On Value Change”属性,并告诉它调用一个以string作为参数的函数。 public string playerName; public void setName (string name) { playerName = name; Debug.Log(“Set playerName: “+name, gameObject); Debug.Log(“Get playerName: “+playerName, gameObject); } 然而,这没有任何作用,我的playerName属性它总是空的,我没有收到任何name 。 我该怎么做呢? 我在Start()函数中看到了一个设置监听器的答案,然后在这里使用UnityEvent : 从Input字段获取文本 但是有没有另一种方法可以使用Unity3d图形编辑器来完成这项工作,而不需要编写如此多的代码?

如何在Unity中检查游戏对象是否有组件方法?

我正在编写一个方法来检查gameObject是否有一个组件。 这里是: public static bool HasComponent (this GameObject obj) { return obj.GetComponent() != null; } 而我正在使用它: void Update() { if (Input.GetKey(“w”)) { if (gameObject.HasComponent()) { print(“Has a rigid body.”); return; } print(“Does not have rigid body.”); } } gameObject没有刚体,但它仍然打印它确实有。