我在使用三星S6的GearVR上的Unity(5.3.4p1)遇到两个主要问题:
1)异步场景加载.是否有任何变化我可以在背景中加载新场景而不会看到小的冻结?场景有~60k三角形,使用了几个4k纹理和~10个其他2k纹理.当这个场景加载时,有多个短暂的冻结.我知道我可以通过淡出黑色然后开始加载级别来避免这种情况.但是需要大约10秒钟,用户可能会因为看到黑色屏幕而长时间使用VR耳机而感到困惑.
2)使用WWW类下载的图像创建纹理.我在另一个场景中使用360 4k图像显示在圆顶上.当我尝试在运行时下载纹理(4k,PNG或JPG)时,它是异步完成的.但是当我使用时,Unity会冻结2-3秒:
Texture2D myTexture = www.texture;
Run Code Online (Sandbox Code Playgroud)
除了使用下载的字节并在背景上使用非Unity算法解压缩JPG或PNG然后将创建的rgb值加载到新纹理之外,有没有其他选项可以避免这种情况吗?在Flickr VR应用程序中可以看到平滑纹理加载的好例子,但我怀疑他们使用Unity来创建这个应用程序.
这两个问题也出现在Oculus Rift上,但由于PC性能要好得多,因此不太明显.
通常,我希望使用Unity在Gear VR中实现平滑的加载体验.这有点可能吗?
我有一个零售Xbox控制台,该控制台已激活Dev模式(已激活Unity)(最新的免费版本)和一个MSDN个人开发人员帐户。
我能够从Xbox上的Visual Studio部署测试应用程序,但是我想知道如何在Unity的Xbox上构建和运行应用程序?
我联系了unity,他们说我需要我的客户经理的批准,但是我是个人开发人员。
我想做的是从Unity部署到Xbox,我正在从Mac(Windows 10版本)并行运行,但是Mac上安装了Unity。
我目前正在Unity 5中开发无人机模拟器,并且我的场景中有4个Unity相机。我现在正在研究一种解决方案,用于将Unity中一个虚拟摄像机的屏幕实时流式传输到我的android智能手机。我正在考虑以下步骤:
使用Texture2D.ReadPixels将屏幕像素读取到一个空的Texture2D
使用EncodeToJPG或EncodeToPNG对Texture2D进行编码
3.将编码的字节发送到设备(通过套接字发送到设备;或使用此WebRTC解决方案)
我已经完成了前两个步骤。现在我不知道如何使用套接字,所以我正在使用WebRTC。但是如何在Unity项目中实现JavaScript代码?有人可以帮我吗?
我在论坛中也找到了WebRTC API,但是我的网络技能还不够好。也许有人可以告诉我,在此代码中我在哪里创建对等连接?
论坛:https : //forum.unity3d.com/threads/unitypeerjs-simple-webrtc-support-for-unity-webgl.310166/
代码(Unity的WebRTC API): https : //www.pastiebin.com/embed/5880b2815c96a
最近我一直在研究保存/加载功能.我想要做的是Vector3在按下"保存"按钮后保存当前电流.但是,我似乎无法弄清楚如何找到一个GameObjects Vector3.
互联网上有很多教程,但它们都在JS中.
我正在尝试集成新的Unity inapp服务并遇到下一个问题:
我在Google Play上创建了项目(现在仅在Alpha测试中没有发布),并且创建了应用内购买内容。在统一编辑器中一切正常,但是当我尝试在设备上运行时,得到了下一个:
*不可用的产品硬币500-**。coins500 OnInitializeFailed InitializationFailureReason:NoProductsAvailable *
通过builder.setPublicKey()和统一分析信息中心插入到代码中的Google Play API密钥该应用具有对BILLING的许可
为什么我不能从GP获得产品?
编辑:刚刚找到了这个主题:http ://docs.unity3d.com/Manual/UnityIAPGooglePlay.html 现在,我正在尝试发布我的应用程序并再次测试IAP。这可能是问题。
Edit2:发布我的应用程序对我的问题没有帮助。有什么办法吗?仍然看到我的产品不可用。OnInitializeFailed初始化失败原因:无产品可用
我必须双击“返回”键才能提交值!它在 2 小时前工作正常(我只需要按回车一次),但后来我重新启动了 Unity,现在我需要双击“回车”才能提交值。
更新 #2
我有一个脚本附加到包含输入字段的画布。代码如下:-
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 input field
inputField.Select ();//Re-focus on the input field
}
}
Run Code Online (Sandbox Code Playgroud)
当我播放场景并在字段中输入并按第一个返回时,日志不会显示任何内容,但是当我再次按下它时它会显示“已按下”。
更新 #3
我找到了某种解决方案,如果我删除“inputField.isFocused”输入字段将检测到第一个“返回”键。但是,在我的情况下,如果输入字段中有一些文本,那么用户单击场景中的任何其他地方然后按 Enter,输入字段将提交它。
请指教
我正在创建一个针对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;
}
Run Code Online (Sandbox Code Playgroud)
使用该代码,场景永远不会改变.
我试过这个典型SceneManager.LoadScene("name")的情况,在这种情况下,场景在30秒后正确变化.
我正在学习 Unity 的第三天,目前正在做滚球教程。我正在尝试添加一个重新启动按钮,将球传送回开始位置/原点。一切都很好,但是在我重新启动后球会继续移动,但我希望它留在一个位置而不是自己移动。
我的意思是,如果我以最大速度向左移动并按“R”重新启动,那么它会在一段时间内保持快速向左移动,但我想要实现的是球在之后不会继续自行移动我重新启动它的位置(也许它的速度只是下降得太慢以至于不明显,在这种情况下我希望它减速得更快)。
这是我刚刚尝试并“希望”可以工作的代码,但没有。我认为我在这里遇到的问题是下一帧再次分配了一个新的 axisHorizontal/axisVertical 变量值,该值取自Input.GetAxis,据我是不可能改变的。
这意味着大于 0/0/0 的运动力和 AddForce 将在下一帧再次激活。
using UnityEngine;
using System.Collections;
public class PlayerScript : MonoBehaviour {
public float movementSpeed = 7f;
private Rigidbody rigidSphere;
void Start() {
rigidSphere = GetComponent<Rigidbody>();
}
void FixedUpdate() {
float axisHorizontal = Input.GetAxis("Horizontal");
float axisVertical = Input.GetAxis("Vertical");
Vector3 movementForce = new Vector3(axisHorizontal, 0.0f, axisVertical);
rigidSphere.AddForce(movementForce * movementSpeed);
if (Input.GetKeyDown(KeyCode.R)) {
transform.position = new Vector3(0, 0, 0);
rigidSphere.AddForce(0, 0, 0);
axisHorizontal = 0;
axisVertical = 0; …Run Code Online (Sandbox Code Playgroud) 我有一个常规的Unity3d项目,我创建了一个简单的第一人称移动"游戏".我最近发现了如何使用Unity并使用通用Windows平台将应用程序放到Xbox One开发人员控制台上.然而,当我将我的游戏构建为Windows商店应用程序时,它说
"尚未安装当前选定的脚本后端(.NET)." 有谁知道如何解决这个问题和/或下载Unity .NET脚本后端?提前致谢!
我想知道 Unity3d 中的 Streaming assets 文件夹和 resources 文件夹之间的区别?