1

こんにちは、このコードのテクスチャをロードします: settingSplit これは文字列配列です。

IEnumerator DownloadLogos()
{
    WWW www = new WWW(settingsSplit[0]);
    while (www.progress < 1)
    {
        slider.GetComponent<UISlider>().value = www.progress;
        if (slider.GetComponent<UISlider>().value > 0.880f)
        {
            slider.GetComponent<UISlider>().value = 1;
        }
        yield return new WaitForEndOfFrame();
    }
    yield return www;

    if (www.error == null)
    {
        fadein = true;
        model.GetComponent<Animation>().Play();
        texTmp = www.textureNonReadable;
        spr = Sprite.Create(texTmp, new Rect(0, 0, texTmp.width, texTmp.height), Vector2.zero, 50);
        spr.texture.wrapMode = TextureWrapMode.Clamp;
        mat.mainTexture = spr.texture;
        decal.sprite = spr;
        yield return new WaitForEndOfFrame();
        slider.SetActive(false);
        float multipier = 1;

        if (settingsSplit[2] != null)
        {
            multipier = float.Parse(settingsSplit[2]);
        }

        decal.transform.localScale = new Vector3(decal.transform.localScale.x * multipier,
            decal.transform.localScale.y * multipier, decal.transform.localScale.z);
        BuildDecal(decal);
    }

正常に動作しますが、テクスチャをロードすると MainThread がしばらく停止します (1 ~ 2 秒)。どうすればこれを修正できますか? ありがとう!

4

2 に答える 2

2

あなたがこれを解決したかどうかはわかりませんが、私は同じ問題に直面していました。問題の行は

spr = Sprite.Create(texTmp, new Rect(0, 0, texTmp.width, texTmp.height), Vector2.zero, 50);

スプライトの作成には時間がかかり、メイン スレッドで実行されるため、ゲームがフリーズします。

私の解決策は、読み込まれたテクスチャを表示するために Image の代わりに RawImage を使用することでした。言及された行を削除して置き換えてください。

decal.sprite = spr;

decal.texture = www.texture;

使用する残りのプロパティ/値を設定します。

これがこの問題を抱えている人に役立つことを願っています。

于 2016-12-27T11:12:43.297 に答える
0

WaitForEndOfFrameは、フレームの最後で再開します。フレームの終わりに降伏した場合、フレームの終わりに次のフレームに進むことはないと確信しています。null を生成するだけで、次のフレームが再開されます。

while (www.progress < 1)
{
    slider.GetComponent<UISlider>().value = www.progress;
    if (slider.GetComponent<UISlider>().value > 0.880f)
    {
        slider.GetComponent<UISlider>().value = 1;
    }
    yield return null;
}
于 2015-02-25T18:02:15.127 に答える