Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
变量在更新后重置为零(Uniity,C#)_C#_Variables_Unity3d - Fatal编程技术网

变量在更新后重置为零(Uniity,C#)

变量在更新后重置为零(Uniity,C#),c#,variables,unity3d,C#,Variables,Unity3d,很抱歉我的糟糕的编码,我只是在一段时间后回到它,我意识到这可以是更多的优化 主要目标是设置我的所有变量,然后当有变化时,我希望它被宣布。这是我所拥有的,在一次更新之后,它们都被设置为零 更深入的方式:我在“新”变量的开始处设置它,用于更新的变量等于开始变量。之后,每次更新我都会检查“新”变量是否与起始变量相同,如果不相同,我会让它读出“新”变量是什么,然后让它用“新”变量替换起始变量。这应该使任何差异只被注意一次 using System.Collections; using System.Co

很抱歉我的糟糕的编码,我只是在一段时间后回到它,我意识到这可以是更多的优化

主要目标是设置我的所有变量,然后当有变化时,我希望它被宣布。这是我所拥有的,在一次更新之后,它们都被设置为零

更深入的方式:我在“新”变量的开始处设置它,用于更新的变量等于开始变量。之后,每次更新我都会检查“新”变量是否与起始变量相同,如果不相同,我会让它读出“新”变量是什么,然后让它用“新”变量替换起始变量。这应该使任何差异只被注意一次

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainCharacterVarsScript : MonoBehaviour 
{
    //These are base character stats
    private int CharacterLife = 100; //  out of 125
    private int CharacterStamina = 100; // out of 100
    private int CharacterSight = 12; // out of 40
    private int CharacterHunger = 100; // out of 100
    private int CharacterExp = 0; // out of 100,000
    private float CharacterStrength;

    //These are the update stats
    int NewCharacterLife;
    int NewCharacterStamina;
    int NewCharacterSight;
    int NewCharacterHunger;
    int NewCharacterExp;

    float NewCharacterStrength;

    // Use this for initialization
    void Start () 
    {
        int CharacterLife = 100; //  out of 125
        int CharacterStamina = 100; // out of 100
        int CharacterSight = 12; // out of 40
        int CharacterHunger = 100; // out of 100
        int CharacterExp = 0;

        float CharacterStrength = ((CharacterHunger * .2f) + (CharacterLife * .15f) + (CharacterStamina * .05f)); // out of 40
        float CharacterSpeed = ((CharacterHunger * .1f) + (CharacterLife * .25f) + (CharacterStamina * .05f)); // out of 40

        Debug.Log ("Character life is " + CharacterLife);
        Debug.Log ("Character Strength is " + CharacterStrength);
        Debug.Log ("Character Stamina is " + CharacterStamina);
        Debug.Log ("Character sight is " + CharacterSight);
        Debug.Log ("Character Hunger is " + CharacterHunger);
        Debug.Log ("Character EXP is " + CharacterExp);
        Debug.Log ("Character Speed is " + CharacterSpeed);

        int NewCharacterLife = CharacterLife;
        int NewCharacterStamina = CharacterStamina;
        int NewCharacterSight = CharacterSight;
        int NewCharacterHunger = CharacterHunger;
        int NewCharacterExp = CharacterExp;

        float NewCharacterStrength = CharacterStrength;
    }

    // Update is called once per frame
    private void Update () 
    {
        float CharacterStrength = ((CharacterHunger * .2f) + (CharacterLife * .15f) + (CharacterStamina * .05f)); // out of 40
        float CharacterSpeed = ((CharacterHunger * .1f) + (CharacterLife * .25f) + (CharacterStamina * .05f)); // out of 40

        if (CharacterLife != NewCharacterLife) 
        {
            Debug.Log ("Character life is now " + NewCharacterLife);
            NewCharacterLife = CharacterLife;
        } 
        else if (CharacterStamina != NewCharacterStamina) 
        { 
            Debug.Log ("Character Stamina is now " + NewCharacterStamina); 
            CharacterStamina = NewCharacterStamina;
        } 
        else if (CharacterSight != NewCharacterSight) 
        { 
            Debug.Log ("Character Sight is now " + NewCharacterSight); 
            CharacterSight = NewCharacterSight;
        } 
        else if (CharacterHunger != NewCharacterHunger) 
        {
            Debug.Log ("Character Hunger is now " + NewCharacterHunger); 
            CharacterHunger = NewCharacterHunger;
        }
        else if (CharacterExp != NewCharacterExp) 
        {
            Debug.Log ("Character EXP is now " + NewCharacterExp);
            CharacterExp = NewCharacterExp;
        }
    }
}
我的代码解释:这花了一段时间,但我认为它会起作用,上面的部分给出了代码的变量,例如我这次设置的变量,但稍后会更像是强度和速度,它们会随着游戏性而改变。然后我创建将在更新中使用的整数变量。当游戏开始时,它会读出变量,它们都是正确的。然后,我在开始时将用于更新的“新”变量设置为等于开始变量。之后,每次更新我都会检查“新”变量是否与起始变量相同,如果不相同,我会让它读出“新”变量是什么,然后让它用“新”变量替换起始变量。这应该使任何差异只被注意一次

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainCharacterVarsScript : MonoBehaviour 
{
    //These are base character stats
    private int CharacterLife = 100; //  out of 125
    private int CharacterStamina = 100; // out of 100
    private int CharacterSight = 12; // out of 40
    private int CharacterHunger = 100; // out of 100
    private int CharacterExp = 0; // out of 100,000
    private float CharacterStrength;

    //These are the update stats
    int NewCharacterLife;
    int NewCharacterStamina;
    int NewCharacterSight;
    int NewCharacterHunger;
    int NewCharacterExp;

    float NewCharacterStrength;

    // Use this for initialization
    void Start () 
    {
        int CharacterLife = 100; //  out of 125
        int CharacterStamina = 100; // out of 100
        int CharacterSight = 12; // out of 40
        int CharacterHunger = 100; // out of 100
        int CharacterExp = 0;

        float CharacterStrength = ((CharacterHunger * .2f) + (CharacterLife * .15f) + (CharacterStamina * .05f)); // out of 40
        float CharacterSpeed = ((CharacterHunger * .1f) + (CharacterLife * .25f) + (CharacterStamina * .05f)); // out of 40

        Debug.Log ("Character life is " + CharacterLife);
        Debug.Log ("Character Strength is " + CharacterStrength);
        Debug.Log ("Character Stamina is " + CharacterStamina);
        Debug.Log ("Character sight is " + CharacterSight);
        Debug.Log ("Character Hunger is " + CharacterHunger);
        Debug.Log ("Character EXP is " + CharacterExp);
        Debug.Log ("Character Speed is " + CharacterSpeed);

        int NewCharacterLife = CharacterLife;
        int NewCharacterStamina = CharacterStamina;
        int NewCharacterSight = CharacterSight;
        int NewCharacterHunger = CharacterHunger;
        int NewCharacterExp = CharacterExp;

        float NewCharacterStrength = CharacterStrength;
    }

    // Update is called once per frame
    private void Update () 
    {
        float CharacterStrength = ((CharacterHunger * .2f) + (CharacterLife * .15f) + (CharacterStamina * .05f)); // out of 40
        float CharacterSpeed = ((CharacterHunger * .1f) + (CharacterLife * .25f) + (CharacterStamina * .05f)); // out of 40

        if (CharacterLife != NewCharacterLife) 
        {
            Debug.Log ("Character life is now " + NewCharacterLife);
            NewCharacterLife = CharacterLife;
        } 
        else if (CharacterStamina != NewCharacterStamina) 
        { 
            Debug.Log ("Character Stamina is now " + NewCharacterStamina); 
            CharacterStamina = NewCharacterStamina;
        } 
        else if (CharacterSight != NewCharacterSight) 
        { 
            Debug.Log ("Character Sight is now " + NewCharacterSight); 
            CharacterSight = NewCharacterSight;
        } 
        else if (CharacterHunger != NewCharacterHunger) 
        {
            Debug.Log ("Character Hunger is now " + NewCharacterHunger); 
            CharacterHunger = NewCharacterHunger;
        }
        else if (CharacterExp != NewCharacterExp) 
        {
            Debug.Log ("Character EXP is now " + NewCharacterExp);
            CharacterExp = NewCharacterExp;
        }
    }
}

对于那些在我对它做了一点修改之后看到它的人来说,这似乎暂时起作用:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainCharacterVarsScript : MonoBehaviour 
{
    //These are base character stats

    private int CharacterLife = 100; //  out of 125
    private int CharacterStamina = 100; // out of 100
    private int CharacterSight = 12; // out of 40
    private int CharacterHunger = 100; // out of 100
    private int CharacterExp = 0; // out of 100,000
    private float CharacterStrength;

    //These are the update stats

    int NewCharacterLife;
    int NewCharacterStamina;
    int NewCharacterSight;
    int NewCharacterHunger;
    int NewCharacterExp;

    float NewCharacterStrength;

    // Use this for initialization
    void Start () 
    {
        float CharacterStrength = ((CharacterHunger * .2f) + (CharacterLife * .15f) + (CharacterStamina * .05f)); // out of 40

        float CharacterSpeed = ((CharacterHunger * .1f) + (CharacterLife * .25f) + (CharacterStamina * .05f)); // out of 40

        Debug.Log ("Character life is " + CharacterLife);
        Debug.Log ("Character Strength is " + CharacterStrength);
        Debug.Log ("Character Stamina is " + CharacterStamina);
        Debug.Log ("Character sight is " + CharacterSight);
        Debug.Log ("Character Hunger is " + CharacterHunger);
        Debug.Log ("Character EXP is " + CharacterExp);
        Debug.Log ("Character Speed is " + CharacterSpeed);

        NewCharacterLife = CharacterLife;
        NewCharacterStamina = CharacterStamina;
        NewCharacterSight = CharacterSight;
        NewCharacterHunger = CharacterHunger;
        NewCharacterExp = CharacterExp;
        NewCharacterStrength = CharacterStrength;
    }

    // Update is called once per frame
    void Update () 
    {
        float CharacterStrength = ((CharacterHunger * .2f) + (CharacterLife * .15f) + (CharacterStamina * .05f)); // out of 40

        float CharacterSpeed = ((CharacterHunger * .1f) + (CharacterLife * .25f) + (CharacterStamina * .05f)); // out of 40

        if (CharacterLife != NewCharacterLife) 
        {
            Debug.Log ("Character life is now " + NewCharacterLife);
            NewCharacterLife = CharacterLife;
        } 
        else if (CharacterStamina != NewCharacterStamina) 
        { 
            Debug.Log ("Character Stamina is now " + NewCharacterStamina); 
            CharacterStamina = NewCharacterStamina;
        } 
        else if (CharacterSight != NewCharacterSight) 
        { 
            Debug.Log ("Character Sight is now " + NewCharacterSight); 
            CharacterSight = NewCharacterSight;
        } 
        else if (CharacterHunger != NewCharacterHunger) 
        {
            Debug.Log ("Character Hunger is now " + NewCharacterHunger); 
            CharacterHunger = NewCharacterHunger;
        }
        else if (CharacterExp != NewCharacterExp) 
        {
            Debug.Log ("Character EXP is now " + NewCharacterExp);
            CharacterExp = NewCharacterExp;
        }
    }
}

您似乎有完全相同名称的成员变量和局部变量。这是故意的吗?这会影响问题吗?我将研究一下这个问题,就像我在一段时间后回到这个话题之前所说的一样。