Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity使用协同程序在UI中显示多个图像_C#_Unity3d - Fatal编程技术网

C# Unity使用协同程序在UI中显示多个图像

C# Unity使用协同程序在UI中显示多个图像,c#,unity3d,C#,Unity3d,我有四个影响游戏最终结果的整数变量 游戏结束后,变量以时间.deltaTime滑动0至最大值(需要5-8秒) 然后,在所有四个变量达到玩家最大分数后,我将显示两个不同的页面(赢/输) 到目前为止,一切都很好,所以当结果改变时,最终图像也会改变 我的问题是我想把第三张图片,而数字幻灯片向上(等待页面!) 但是我看不到第三页。 我使用了检查员,尝试了几乎所有的可能性,但我看不到第三张图片 这是我的密码: using System.Collections; using System.Collectio

我有四个影响游戏最终结果的整数变量

游戏结束后,变量以
时间.deltaTime
滑动0至最大值(需要5-8秒)

然后,在所有四个变量达到玩家最大分数后,我将显示两个不同的页面(赢/输)

到目前为止,一切都很好,所以当结果改变时,最终图像也会改变

我的问题是我想把第三张图片,而数字幻灯片向上(等待页面!)

但是我看不到第三页。 我使用了检查员,尝试了几乎所有的可能性,但我看不到第三张图片

这是我的密码:

using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;

public class EndGameStat : MonoBehaviour {
    public Text AppearanceStatText;
    public Text LikeabilityStatText;
    public Text MannerismsStatText;
    public Text HumanityStatText;
    public Text ResultText;
    public Text StoryResultText;
    public Image failImage;
    public Image SuccessImage;
    public Image WaitingImage;
    public Sprite failImageSprite;
    public Sprite successImageSprite;
    public Sprite WaitingImageSprite;

    public static float AppearanceStat = 0;
    public static float LikeabilityStat = 0;
    public static float MannerismsStat = 0;
    public static float HumanityStat = 0;

    public static int AppearanceStatFinal = 70;
    public static int LikeabilityStatFinal = 40;
    public static int MannerismsStatFinal = 90;
    public static int HumanityStatFinal = 30;

    public static int intialNumber;
    public static int animationTime = 3;

    public static float avg = (AppearanceStatFinal + LikeabilityStatFinal + MannerismsStatFinal) / 3;

    Color maxColor = new Color32 (20, 200, 20, 255);
    Color minColor = new Color32 (250, 10, 0, 255);

    // Start is called before the first frame update
    void Start () {

        AppearanceStatText.text = AppearanceStat.ToString ();
        LikeabilityStatText.text = LikeabilityStat.ToString ();
        MannerismsStatText.text = MannerismsStat.ToString ();
        HumanityStatText.text = HumanityStat.ToString ();

    }

    // Update is called once per frame
    void Update () {

        if (AppearanceStatFinal != AppearanceStat) {

            AppearanceStat += (animationTime * Time.deltaTime);
            AppearanceStatText.text = AppearanceStat.ToString ("f0");
            AppearanceStatText.GetComponent<Text> ().color = Color.Lerp (minColor, maxColor, AppearanceStat / 100f);
            if (AppearanceStat > AppearanceStatFinal)
                AppearanceStat = AppearanceStatFinal;

        }

        if (LikeabilityStatFinal != LikeabilityStat) {

            LikeabilityStat += (animationTime * Time.deltaTime);
            LikeabilityStatText.text = LikeabilityStat.ToString ("f0");
            LikeabilityStatText.GetComponent<Text> ().color = Color.Lerp (minColor, maxColor, LikeabilityStat / 100f);
            if (LikeabilityStat > LikeabilityStatFinal)
                LikeabilityStat = LikeabilityStatFinal;

        }

        if (MannerismsStatFinal != MannerismsStat) {

            MannerismsStat += (animationTime * Time.deltaTime);
            MannerismsStatText.text = MannerismsStat.ToString ("f0");
            MannerismsStatText.GetComponent<Text> ().color = Color.Lerp (minColor, maxColor, MannerismsStat / 100f);
            if (MannerismsStat > MannerismsStatFinal)
                MannerismsStat = MannerismsStatFinal;

        }

        if (HumanityStatFinal != HumanityStat) {

            HumanityStat += (animationTime * Time.deltaTime);
            HumanityStatText.text = HumanityStat.ToString ("f0");
            HumanityStatText.GetComponent<Text> ().color = Color.Lerp (minColor, maxColor, HumanityStat / 100f);
            if (HumanityStat > HumanityStatFinal)
                HumanityStat = HumanityStatFinal;

        }

        StartCoroutine (resultPage ());

    }
    bool CDPage () {

        if (HumanityStat == HumanityStatFinal & MannerismsStat == MannerismsStatFinal & LikeabilityStat == LikeabilityStatFinal & AppearanceStat == AppearanceStatFinal) {

            return true;

        } else {

            return false;

        }
    }

    IEnumerator resultPage () {

        yield return new WaitUntil (CDPage);

        if (avg < 50) {
            ResultText.text = "FAIL!";
            StoryResultText.text = "You are not belong here";
            failImage.sprite = failImageSprite;
            SuccessImage.enabled = false;

        } else {
            ResultText.text = "SUCCESS";
            StoryResultText.text = "Welcome!!";
            SuccessImage.sprite = successImageSprite;
            failImage.enabled = false;

        }

    }

}
使用系统集合;
使用System.Collections.Generic;
使用系统线程;
使用System.Threading.Tasks;
使用UnityEngine;
使用UnityEngine.UI;
公共类EndGameStat:单行为{
公共文本外观文本;
公共文本相似性StatText;
公共文本风格统计文本;
公共文本HumanityStatText;
公共文本结果文本;
公共文本StoryResultText;
公众形象;
公众形象;成功形象;
公众形象等待形象;
公共精灵;
公共雪碧系列雪碧;
公共精灵等待图像精灵;
公共静态浮点数AppearanceStat=0;
公共静态浮点LikeabilityStat=0;
公共静态float MannerismsStat=0;
公共静态浮点HumanityStat=0;
公共静态int AppearanceStatFinal=70;
公共静态int-LikeabilityStatFinal=40;
公共静态int-mannerismstatfinal=90;
公共静态int HumanityStatFinal=30;
公共静态整数初始数;
公共静态int animationTime=3;
公共静态浮点平均值=(外观StatFinal+相似性StatFinal+动作StatFinal)/3;
Color maxColor=new Color32(20,200,20,255);
Color minColor=新颜色32(250,10,0,255);
//在第一帧更新之前调用Start
无效开始(){
AppearanceStatText.text=AppearanceStat.ToString();
LikeabilityStatText.text=LikeabilityStat.ToString();
mannerismstattext.text=MannerismsStat.ToString();
HumanityStatText.text=HumanityStat.ToString();
}
//每帧调用一次更新
无效更新(){
if(AppearanceStatFinal!=AppearanceStat){
AppearanceStat+=(animationTime*Time.deltaTime);
AppearanceStatText.text=AppearanceStat.ToString(“f0”);
AppearanceStatText.GetComponent().color=color.Lerp(minColor、maxColor、AppearanceStat/100f);
如果(ApparanceStat>ApparanceStatFinal)
AppearanceStat=AppearanceStatFinal;
}
if(LikeabilityStatFinal!=LikeabilityStat){
LikeabilityStat+=(animationTime*Time.deltaTime);
LikeabilityStatText.text=LikeabilityStat.ToString(“f0”);
LikeabilityStatText.GetComponent().color=color.Lerp(minColor、maxColor、LikeabilityStat/100f);
if(LikeabilityStat>likeabilitystfinal)
LikeabilityStat=LikeabilityStatFinal;
}
if(mannerismstatfinal!=MannerismsStat){
MannerismsStat+=(animationTime*Time.deltaTime);
mannerismstattext.text=mannerismstat.ToString(“f0”);
MannerismsStatText.GetComponent().color=color.Lerp(minColor、maxColor、MannerismsStat/100f);
if(mannerismstat>mannerismstatfinal)
mannerismstat=mannerismstatfinal;
}
如果(HumanityStatFinal!=HumanityStat){
HumanityStat+=(animationTime*Time.deltaTime);
HumanityStatText.text=HumanityStat.ToString(“f0”);
HumanityStatText.GetComponent().color=color.Lerp(minColor、maxColor、HumanityStat/100f);
如果(HumanityStat>HumanityStatFinal)
HumanityStat=HumanityStatFinal;
}
开始例行程序(结果页());
}
bool-CDPage(){
如果(HumanityStat==HumanityStatFinal&MannerismStat==MannerismStatFinal&LikeabilityStat==LikeabilityStatFinal&AppearanceStat==AppearanceStatFinal){
返回true;
}否则{
返回false;
}
}
IEnumerator结果页(){
返回新的等待时间(CDPage);
如果(平均值<50){
ResultText.text=“失败!”;
StoryResultText.text=“你不属于这里”;
failImage.sprite=failImageSprite;
SuccessImage.enabled=false;
}否则{
ResultText.text=“成功”;
StoryResultText.text=“欢迎!!”;
SuccessImage.sprite=SuccessImage sprite;
failImage.enabled=false;
}
}
}
你能帮我找出我的错误吗

更新:

更新后,我想你想要的是

private void Awake(){
    // enough to do these only once
    WaitingImage.sprite = WaitingImageSprite;
    failImage.sprite = failImageSprite;
    SuccessImage.sprite = successImageSprite;
}

IEnumerator resultPage () 
{
    WaitingImage.enabled = true;
    SuccessImage.enabled = false;
    failImage.enabled = false;

    yield return new WaitUntil (CDPage);

    if (avg < 50) {
        ResultText.text = "FAIL!";
        StoryResultText.text = "You are not belong here";
        failImage.enabled = true;
    } else {
        ResultText.text = "SUCCESS";
        StoryResultText.text = "Welcome!!";
        SuccessImage.enabled = true;
    }

}
请注意,
Update
方法不断调用新的
start例程(resultPage())每一帧。所以你得到了一堆并发的例程。如果例程已经在运行,您应该跳过它,或者在
start
中只启动例程一次

还有,为什么在那里使用
static
?如果这些是常量,则将它们设置为常量

实际上,我只是简单地将整个代码移动到一个类似

// yes, Start itself can be a coroutine ;)
void IEnumerator Start () 
{
    WaitingImage.enabled = true;
    SuccessImage.enabled = false;
    failImage.enabled = false;

    AppearanceStatText.text = AppearanceStat.ToString ();
    LikeabilityStatText.text = LikeabilityStat.ToString ();
    MannerismsStatText.text = MannerismsStat.ToString ();
    HumanityStatText.text = HumanityStat.ToString ();

    while(HumanityStat != HumanityStatFinal || MannerismsStat != MannerismsStatFinal || LikeabilityStat != LikeabilityStatFinal || AppearanceStat != AppearanceStatFinal
    {
        if (AppearanceStatFinal != AppearanceStat) 
        {
            AppearanceStat += (animationTime * Time.deltaTime);
            // do your clamping first, then set the color and update the text
            if (AppearanceStat > AppearanceStatFinal) AppearanceStat = AppearanceStatFinal;
            AppearanceStatText.text = AppearanceStat.ToString ("f0");
            AppearanceStatText.color = Color.Lerp (minColor, maxColor, AppearanceStat / 100f);
        }

        //TODO EQUALLY FOR THE OTHER 4 TEXTS AND ACCORDING VALUES

        // finally wait for the next frame here
        yield return null;
    }

    // finally do your check    

    if (avg < 50) 
    {
        ResultText.text = "FAIL!";
        StoryResultText.text = "You are not belong here";
        failImage.enabled = true;
    } 
    else 
    {
        ResultText.text = "SUCCESS";
        StoryResultText.text = "Welcome!!";
        SuccessImage.enabled = true;
    }
}
//是的,启动本身可以是一个协同程序;)
无效IEnumerator开始()
{
WaitingImage.enabled=true;
SuccessImage.enabled=false;
failImage.enabled=false;
AppearanceStatText.text=AppearanceStat.ToString();
LikeabilityStatText.text=LikeabilityStat.ToString();
mannerismstattext.text=MannerismsStat.ToString();
HumanityStatText.text=HumanityStat.ToString();
while(HumanityStat!=HumanityStatFinal | | | MannerismsStat!=mannerismstatfinal | | | | LikeabilityStat!=likeability
// yes, Start itself can be a coroutine ;)
void IEnumerator Start () 
{
    WaitingImage.enabled = true;
    SuccessImage.enabled = false;
    failImage.enabled = false;

    AppearanceStatText.text = AppearanceStat.ToString ();
    LikeabilityStatText.text = LikeabilityStat.ToString ();
    MannerismsStatText.text = MannerismsStat.ToString ();
    HumanityStatText.text = HumanityStat.ToString ();

    while(HumanityStat != HumanityStatFinal || MannerismsStat != MannerismsStatFinal || LikeabilityStat != LikeabilityStatFinal || AppearanceStat != AppearanceStatFinal
    {
        if (AppearanceStatFinal != AppearanceStat) 
        {
            AppearanceStat += (animationTime * Time.deltaTime);
            // do your clamping first, then set the color and update the text
            if (AppearanceStat > AppearanceStatFinal) AppearanceStat = AppearanceStatFinal;
            AppearanceStatText.text = AppearanceStat.ToString ("f0");
            AppearanceStatText.color = Color.Lerp (minColor, maxColor, AppearanceStat / 100f);
        }

        //TODO EQUALLY FOR THE OTHER 4 TEXTS AND ACCORDING VALUES

        // finally wait for the next frame here
        yield return null;
    }

    // finally do your check    

    if (avg < 50) 
    {
        ResultText.text = "FAIL!";
        StoryResultText.text = "You are not belong here";
        failImage.enabled = true;
    } 
    else 
    {
        ResultText.text = "SUCCESS";
        StoryResultText.text = "Welcome!!";
        SuccessImage.enabled = true;
    }
}