obj我有一個腳本在哪裏寫了兩個classes.I在創建對象從第二類統計在類StatsTotal中有問題。 stats[i] = new Stats(i);
這裏我有問題。從Stats()創建的對象爲空,因此數組統計信息的所有元素都爲null。在統一中我不能從我自己的類創建對象?請幫忙。謝謝。Unity3D C#不能創建從類
StatsTotal
腳本:
public class StatsTotal : MonoBehaviour
{
// Use this for initialization
Stats[] stats;
static int carsCount;
int currentCar;
GameObject player;
void Start()
{
carsCount = PlayerPrefs.GetInt("CarsCount");
stats = new Stats[carsCount];
for (int i = 0; i < carsCount; i++)
{
stats[i] = new Stats(i);
if (stats[currentCar] != null)
{
Debug.Log(getStats().driftTimePresent + " " + getStats().driftTimeTotal);
}
stats[i].ReadTotal();
}
}
void OnLevelWasLoaded()
{
if (Application.loadedLevelName != "MenuScene" && Application.loadedLevelName != "PrizeScene")
{
foreach (GameObject obj in GameObject.FindGameObjectsWithTag("PlayerSystem"))
{
if (obj.GetComponent<PlayerScript>().mainPlayer)
{
player = obj;
break;
}
}
}
currentCar = GetComponent<VariableHandler>().selectedCar;
}
// Update is called once per frame
void Update()
{
if (Application.loadedLevelName != "MenuScene" && Application.loadedLevelName != "PrizeScene")
{
if (stats[currentCar] != null)
{
Debug.Log(getStats().driftTimePresent + " " + getStats().driftTimeTotal);
getStats().driftTimePresent = (int)player.GetComponent<PlayerScript>().driftTime;
}
}
}
public Stats getStats()
{
return stats[currentCar];
}
}
Stats
腳本:
public class Stats : MonoBehaviour
{
public int driftTimeTotal, driftTimePresent;
public int explodedTotal, explodedPresent;
public int flagsTotal, flagsPresent;
public int x2Total, x2Present;
public int shieldTotal, shieldPresent;
public int healthTotal, healthPresent;
public int scoreTotal, scorePresents;
public int finish1stTotal, finish1stPresent;
public int bonusesTotal, bonusesPresent;
public int hitsObjTotal, hitsObjPresent;
public int hitsCarTotal, hitsCarPresent;
public int jumpTotal, jumpPresent;
public int index;
public Stats(int index)
{
this.index = index;
}
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void ResetPresent()
{
driftTimePresent = 0;
explodedPresent = 0;
flagsPresent = 0;
x2Present = 0;
shieldPresent = 0;
healthPresent = 0;
scorePresents = 0;
finish1stPresent = 0;
bonusesPresent = 0;
hitsObjPresent = 0;
hitsCarPresent = 0;
jumpPresent = 0;
}
public void SaveTotal()
{
PlayerPrefs.SetInt("driftTimeTotal" + index, driftTimeTotal);
PlayerPrefs.SetInt("explodedTotal" + index, explodedTotal);
PlayerPrefs.SetInt("flagsTotal" + index, flagsTotal);
PlayerPrefs.SetInt("x2Total" + index, x2Total);
PlayerPrefs.SetInt("shieldTotal" + index, shieldTotal);
PlayerPrefs.SetInt("healthTotal" + index, healthTotal);
PlayerPrefs.SetInt("scoreTotal" + index, scoreTotal);
PlayerPrefs.SetInt("finish1stTotal" + index, finish1stTotal);
PlayerPrefs.SetInt("bonusesTotal" + index, bonusesTotal);
PlayerPrefs.SetInt("hitsObjTotal" + index, hitsObjTotal);
PlayerPrefs.SetInt("hitsCarTotal" + index, hitsCarTotal);
PlayerPrefs.SetInt("jumpTotal" + index, jumpTotal);
}
public void ReadTotal()
{
driftTimePresent = PlayerPrefs.GetInt("driftTimeTotal" + index);
explodedPresent = PlayerPrefs.GetInt("explodedPresent" + index);
flagsPresent = PlayerPrefs.GetInt("flagsPresent" + index);
x2Present = PlayerPrefs.GetInt("x2Present" + index);
shieldPresent = PlayerPrefs.GetInt("shieldPresent" + index);
healthPresent = PlayerPrefs.GetInt("healthPresent" + index);
scorePresents = PlayerPrefs.GetInt("scorePresents" + index);
finish1stPresent = PlayerPrefs.GetInt("finish1stPresent" + index);
bonusesPresent = PlayerPrefs.GetInt("bonusesPresent" + index);
hitsObjPresent = PlayerPrefs.GetInt("hitsObjPresent" + index);
hitsCarPresent = PlayerPrefs.GetInt("hitsCarPresent" + index);
jumpPresent = PlayerPrefs.GetInt("jumpPresent" + index);
}
public void SetTotal()
{
driftTimeTotal = PlayerPrefs.GetInt("driftTimeTotal" + index) + driftTimePresent;
explodedTotal = PlayerPrefs.GetInt("explodedTotal" + index) + explodedPresent;
flagsTotal = PlayerPrefs.GetInt("flagsTotal" + index) + flagsPresent;
x2Total = PlayerPrefs.GetInt("x2Total" + index) + x2Present;
shieldTotal = PlayerPrefs.GetInt("shieldTotal" + index) + shieldPresent;
healthTotal = PlayerPrefs.GetInt("healthTotal" + index) + healthPresent;
scoreTotal = PlayerPrefs.GetInt("scoreTotal" + index) + scorePresents;
finish1stTotal = PlayerPrefs.GetInt("finish1stTotal" + index) + finish1stPresent;
bonusesTotal = PlayerPrefs.GetInt("bonusesTotal" + index) + bonusesPresent;
hitsObjTotal = PlayerPrefs.GetInt("hitsObjTotal" + index) + hitsObjPresent;
hitsCarTotal = PlayerPrefs.GetInt("hitsCarTotal" + index) + hitsCarPresent;
jumpTotal = PlayerPrefs.GetInt("jumpTotal" + index) + jumpPresent;
}
}
不要Monobehavior –