Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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/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
C# Unity Inspector在运行时清除变量_C#_Unity3d_Unity5 - Fatal编程技术网

C# Unity Inspector在运行时清除变量

C# Unity Inspector在运行时清除变量,c#,unity3d,unity5,C#,Unity3d,Unity5,所以我有了一个非常基本的战斗脚本,它将玩家和脚本所附的任何敌人都纳入了这个脚本中。但是,当我点击play来测试游戏时,我在inspector中添加到player变量的值消失了,就好像我从未添加任何东西一样。当我按下“停止”按钮时,它再次出现 我的超级简单的战斗脚本 using UnityEngine; using System.Collections; using UnityEditor; using UnityEngine.UI; public class BasicCombat : Mon

所以我有了一个非常基本的战斗脚本,它将玩家和脚本所附的任何敌人都纳入了这个脚本中。但是,当我点击play来测试游戏时,我在inspector中添加到player变量的值消失了,就好像我从未添加任何东西一样。当我按下“停止”按钮时,它再次出现

我的超级简单的战斗脚本

using UnityEngine;
using System.Collections;
using UnityEditor;
using UnityEngine.UI;

public class BasicCombat : MonoBehaviour

{

public KennedyClass playerK;
public pawnClass pawn;
public archerClass archer;



// Use this for initialization
void Start()
{

    playerK = GetComponent<KennedyClass>();
    pawn = GetComponent<pawnClass>();
    archer = GetComponent<archerClass>();
    playerK.charHP = playerK.maxHP;

}

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

}

public void Attack()
{

    if (gameObject.CompareTag("Pawn")) 
    {
        while (playerK.charHP != 0 & pawn.pawnHP !=0)
        {               
                playerK.charHP -= pawn.pawnDamage;
                playerK.HPCount();
                Debug.Log("Player - " + playerK.charHP);
                var option = EditorUtility.DisplayDialogComplex(
                     "Attack",
                     "Do you want to attack?",
                     "Yes",
                     "No",
                     "Exit");

                switch (option)
                {
                    case 0:
                        pawn.pawnHP -= playerK.atkP;
                        Debug.Log("Pawn - " + pawn.pawnHP);
                        break;                          
                    case 1:
                        //Exit loop (for now)
                        break;
                    case 2:
                        //Exit loop (for now)
                        break;
                }                
        }          
    }
    else if (gameObject.CompareTag("Archer"))
    {
        while (playerK.HP != 0 & pawn.pawnHP != 0)
        {
            playerK.HP -= archer.archerDamage;
            Debug.Log("Player - " + playerK.HP);
            var option = EditorUtility.DisplayDialogComplex(
                 "Attack",
                 "Do you want to attack?",
                 "Yes",
                 "No",
                 "Exit");

            switch (option)
            {
                case 0:
                    archer.archerHP -= playerK.atkP;
                    Debug.Log("Archer - " + archer.archerHP);
                    break;
                case 1:
                    //Exit loop (for now)
                    break;
                case 2:
                    //Exit loop (for now)
                    break;
            }
        }
    }


    if (playerK.charHP == 0)
    {
        Debug.Log("Player death");
        Application.LoadLevel(0);
    }


    if (pawn.pawnHP == 0)
    {
        Debug.Log("Enemy death");
        pawn.GetComponent<Renderer>().enabled = false;
    }
    if (archer.archerHP == 0)
    {
        Debug.Log("Enemy death");
        archer.GetComponent<Renderer>().enabled = false;
    }
  }
}
使用UnityEngine;
使用系统集合;
使用UnityEditor;
使用UnityEngine.UI;
公共课基本课程:单一行为
{
公共犬类运动员;
公共典当类典当;
公共射箭运动员;
//用于初始化
void Start()
{
playerK=GetComponent();
pawn=GetComponent();
archer=GetComponent();
playerK.charHP=playerK.maxHP;
}
//每帧调用一次更新
无效更新()
{
}
公开无效攻击()
{
if(gameObject.CompareTag(“典当”))
{
while(playerK.charHP!=0和pawn.pawnHP!=0)
{               
playerK.charHP-=典当师.pawnDamage;
playerK.HPCount();
Log(“Player-”+playerK.charHP);
var option=EditorUtility.DisplayDialogComplex(
“攻击”,
“你想进攻吗?”,
“是的”,
“不”,
“退出”);
开关(选件)
{
案例0:
pawn.pawnHP-=玩家k.atkP;
Debug.Log(“Pawn-”+Pawn.pawnHP);
打破
案例1:
//退出循环(暂时)
打破
案例2:
//退出循环(暂时)
打破
}                
}          
}
else if(gameObject.CompareTag(“弓箭手”))
{
while(playerK.HP!=0和pawn.pawnHP!=0)
{
玩家k.HP-=射手伤害;
Log(“Player-”+playerK.HP);
var option=EditorUtility.DisplayDialogComplex(
“攻击”,
“你想进攻吗?”,
“是的”,
“不”,
“退出”);
开关(选件)
{
案例0:
archer.archerHP-=玩家K.atkP;
Log(“Archer-”+Archer.archerHP);
打破
案例1:
//退出循环(暂时)
打破
案例2:
//退出循环(暂时)
打破
}
}
}
如果(playerK.charHP==0)
{
Debug.Log(“玩家死亡”);
应用程序。加载级别(0);
}
if(pawn.pawnHP==0)
{
调试日志(“敌人死亡”);
pawn.GetComponent().enabled=false;
}
if(archer.archerHP==0)
{
调试日志(“敌人死亡”);
archer.GetComponent().enabled=false;
}
}
}

您正在更改
Start
功能中的变量。拆下线路

playerK=GetComponent()

通过
启动
函数,使变量保持在inspector中设置的状态

为了稍微解释一下发生了什么,当您在inspector中分配player变量时,您是在给它一个
GameObject
的引用,并附加了
KenedyClass
脚本。这是我假设你想要的参考资料

但是,当您调用
playerK=GetComponent()时
然后您会说“忘记我在inspector中设置的内容,在该脚本所附加的游戏对象上查找
KennedyClass
组件,并将
playerK
设置为它”
。如果没有一个
KennedyClass
脚本附加到这个游戏对象上,我假设没有,那么它将返回
null
并在inspector中擦除设置