标签: unity5

无缝异步场景和纹理加载 - Unity&GearVR

我在使用三星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中实现平滑的加载体验.这有点可能吗?

android unity-game-engine oculus unity5 gear-vr

5
推荐指数
1
解决办法
1380
查看次数

Xbox One开发模式和Unity免费版本

我有一个零售Xbox控制台,该控制台已激活Dev模式(已激活Unity)(最新的免费版本)和一个MSDN个人开发人员帐户。

我能够从Xbox上的Visual Studio部署测试应用程序,但是我想知道如何在Unity的Xbox上构建和运行应用程序?

我联系了unity,他们说我需要我的客户经理的批准,但是我是个人开发人员。

我想做的是从Unity部署到Xbox,我正在从Mac(Windows 10版本)并行运行,但是Mac上安装了Unity。

game-development xbox-one unity5 uwp

5
推荐指数
1
解决办法
3884
查看次数

Unity 5-将Unity相机流式传输到智能手机

我目前正在Unity 5中开发无人机模拟器,并且我的场景中有4个Unity相机。我现在正在研究一种解决方案,用于将Unity中一个虚拟摄像机的屏幕实时流式传输到我的android智能手机。我正在考虑以下步骤:

  1. 使用Texture2D.ReadPixels将屏幕像素读取到一个空的Texture2D

  2. 使用EncodeToJPG或EncodeToPNG对Texture2D进行编码

3.将编码的字节发送到设备(通过套接字发送到设备;或使用此WebRTC解决方案)

  1. 在设备上:将字节读入图像(例如,使用ByteArrayInputStream和BitmapFactory的组合)

我已经完成了前两个步骤。现在我不知道如何使用套接字,所以我正在使用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

video smartphone video-streaming unity-game-engine unity5

5
推荐指数
1
解决办法
2846
查看次数

找一个GameObjects Vector3

最近我一直在研究保存/加载功能.我想要做的是Vector3在按下"保存"按钮后保存当前电流.但是,我似乎无法弄清楚如何找到一个GameObjects Vector3.

互联网上有很多教程,但它们都在JS中.

c# unity-game-engine unity5

4
推荐指数
1
解决办法
192
查看次数

新的Unity应用内购买集成(Android)

我正在尝试集成新的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初始化失败原因:无产品可用

service android unity-game-engine in-app unity5

4
推荐指数
2
解决办法
5976
查看次数

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

我必须双击“返回”键才能提交值!它在 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,输入字段将提交它。

请指教

c# unity-game-engine unity5

4
推荐指数
1
解决办法
7226
查看次数

在背景中加载新场景

我正在创建一个针对Samsung Gear VR的Unity应用程序.我目前有两个场景:

  1. 最初的一幕
  2. 第二个场景,数据量很大(加载场景需要太多时间).

从第一个场景开始,我想在后台加载第二个场景,并在加载后切换到它.当新场景在后台加载时,用户应该保持移动头部以查看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秒后正确变化.

c# unity-game-engine unity5

4
推荐指数
1
解决办法
6741
查看次数

如何在重新启动球体位置后阻止球体自行移动?

我正在学习 Unity 的第三天,目前正在做滚球教程。我正在尝试添加一个重新启动按钮,将球传送回开始位置/原点。一切都很好,但是在我重新启动后球会继续移动,但我希望它留在一个位置而不是自己移动。

我的意思是,如果我以最大速度向左移动并按“R”重新启动,那么它会在一段时间内保持快速向左移动,但我想要实现的是球在之后不会继续自行移动我重新启动它的位置(也许它的速度只是下降得太慢以至于不明显,在这种情况下我希望它减速得更快)。

这是我刚刚尝试并“希望”可以工作的代码,但没有。我认为我在这里遇到的问题是下一帧再次分配了一个新的 axisHorizo​​ntal/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)

c# unity-game-engine game-physics unity5

4
推荐指数
1
解决办法
1049
查看次数

Unity3d,当前选择的脚本后端(.NET)未安装

我有一个常规的Unity3d项目,我创建了一个简单的第一人称移动"游戏".我最近发现了如何使用Unity并使用通用Windows平台将应用程序放到Xbox One开发人员控制台上.然而,当我将我的游戏构建为Windows商店应用程序时,它说

"尚未安装当前选定的脚本后端(.NET)."

有谁知道如何解决这个问题和/或下载Unity .NET脚本后端?

提前致谢!

c# unity-game-engine visual-studio unity5

4
推荐指数
1
解决办法
9522
查看次数

Unity 中的流资产文件夹 VS 资源文件夹?

我想知道 Unity3d 中的 Streaming assets 文件夹和 resources 文件夹之间的区别?

unity-game-engine unity5

4
推荐指数
2
解决办法
6339
查看次数