Сценарий
Я работаю над игрой, в которой переменная numStamps начинается с 2, эта переменная также установлена как public int, и я вижу ее в моем инспекторе иэто в сценарии с именем Weather
public int numStamps;
Теперь вы можете подумать, что «где numStamps» объявляется как имеющее значение 2?в инспекторе?Но на самом деле у меня есть ссылка на gameObject в другом скрипте с именем GameMode, и я перетаскиваю «скрипт погоды» в инспектор этого скрипта GameMode.
Это позволяет мне получить доступ к переменной numStamps
,Цель этого заключается в том, что у меня есть emum, в котором я изменяю эту переменную z
в зависимости от выбранной сложности.См. Ниже
using DigitalRuby.WeatherMaker;
using MoreMountains.Tools;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameMode : MonoBehaviour {
public GameObject mainCamera;
public GameObject fallingObjects;
public GameObject WeatherMaker;
public GameObject stormHerald;
public enum GameDifficulty
{
Test,
Easy,
Medium,
Hard
}
[Information("Selece Game Mode", MoreMountains.Tools.InformationAttribute.InformationType.Info, false)]
/// Set Variables based on selected mode
// public motionDirections motionState = motionDirections.Vertical;
public GameDifficulty Mode = GameDifficulty.Easy;
// Use this for initialization
void Start () {
switch (Mode)
{
case GameDifficulty.Test:
stormHerald.GetComponent<Weather>().numStamps = 2;
break;
case GameDifficulty.Easy:
stormHerald.GetComponent<Weather>().numStamps = 2;
break;
case GameDifficulty.Medium:
stormHerald.GetComponent<Weather>().numStamps = 2;
break;
case GameDifficulty.Hard:
stormHerald.GetComponent<Weather>().numStamps = 3;
break;
}
}
public void reduceStamp()
{
stormHerald.GetComponent<Weather>().numStamps = stormHerald.GetComponent<Weather>().numStamps - 1;
}
public void extendStamp()
{
stormHerald.GetComponent<Weather>().numStamps = stormHerald.GetComponent<Weather>().numStamps + 1 ;
}
// Update is called once per frame
void Update () {
Debug.Log(stormHerald.GetComponent<Weather>().numStamps);
}
}
Проблема
Проблема, с которой я экспериментирую, заключается в том, что при использовании моего метода exteStamp метод вызывается в коде, а метод обновлениятакже показывает мне, что значение numStamp увеличивается.ОДНАКО, в инспекторе, который не соответствует истине, и ситуации, которые должны возникнуть, когда эта переменная равна, например, 5, не возникает.Странно, если numStamps
предполагается равным 7, это значение отображается только в инспекторе, когда я перезапускаю игру.
То же самое относится и к сложности игры, изменение сложности изменяет только значения, если я начинаюэто во второй раз.
Так что мне кажется, что я обновляю это значение неправильно, что странно, потому что я постоянно меняю значения в инспекторе в моей игре, но я просто не могу заставить этот момент работать правильно.
Буду признателен за некоторую помощь или руководство в этом
С уважением
Погода
void Update () {
timeBetweenStorms -= Time.deltaTime;
if ( numStamps>0 && isStormyNow == false)
{
if (timeBetweenStorms <= 0.0f)
{
// timerEnded();
// var chanceOfSpawningKremlin = 0.75f;
float rValue;
rValue = Random.value;
Debug.Log(rValue + "% Chance of Storm");
if (rValue < chanceEvent)
{
timeBetweenStorms = timeBetweenIfStorms;
StartCoroutine(TemporarilyActivateStormWarning(ActivateFor));
}else
{
timeBetweenStorms = timeBetweenIfNoStorms;
}
}
}
}