Я работаю над кодированием движения игрока, и я хочу подготовить заранее подготовленную статистику движения для "бонусов" и так далее.Я сделал скрипт управления статистикой отдельно от своего скрипта движения для организации, и у меня есть переменные движения, упакованные в структуры, чтобы их можно было переключать в режиме воспроизведения.
Я могу импортировать структуру Исходящие статистические данные изсценарий управления статистикой, но я хочу присвоить структуру его собственной переменной в сценарии перемещения, чтобы ее было проще обрабатывать.Он копирует, но моя новая переменная структуры возвращает 0 для всех своих внутренних переменных вместо копирования значений из исходной структуры.
Tl; dr Я пытаюсь скопировать структуру из одного сценария в другой, но когда сказаноСтруктура копирует, копия имеет переменные с 0.
Сценарий управления статистикой
public struct StatsSet
{
public int JumpCount;
public float JumpPower;
public float MoveSpeed;
public float QuickFallMultiplier;
public float BaseFallMultiplier;
}
//Public variables for experimental movement stats testing
public int ExJumpCount = 1;
public float ExJumpPower = 6.0f;
public float ExMoveSpeed = 4.0f;
public float ExQuickFallMultiplier = 2.0f;
public float ExBaseFallMultiplier = 2.5f;
public int Statpick = 1;
public StatsSet StatsOut;
private StatsSet ExStats;
private StatsSet BaseStats;
// Use this for initialization
void Start () {
BaseStats.JumpCount = 1;
BaseStats.JumpPower = 6.0f;
BaseStats.MoveSpeed = 4.0f;
BaseStats.QuickFallMultiplier = 2.0f;
BaseStats.BaseFallMultiplier = 2.5f;
ExStats.BaseFallMultiplier = ExBaseFallMultiplier;
ExStats.JumpCount = ExJumpCount;
ExStats.JumpPower = ExJumpPower;
ExStats.MoveSpeed = ExMoveSpeed;
ExStats.QuickFallMultiplier = ExQuickFallMultiplier;
Statpick = 1;
}
// Update is called once per frame
void Update () {
if (Statpick == 0)
{
StatsOut = ExStats;
}
else if (Statpick == 1)
{
StatsOut = BaseStats;
}
}
Сценарий движения
private Rigidbody PlayerRigid;
private int JumpCheck;
private bool IsGrounded = true;
public Collider GroundCollider;
private int HiddenJumpCount;
//Import of player stats data
private PlayerStats PStats;
private PlayerStats.StatsSet PlayerStats;
// Use this for initialization
void Start()
{
PStats = GetComponent<PlayerStats>();
PlayerRigid = GetComponent<Rigidbody>();
PlayerStats = PStats.StatsOut;
JumpCheck = PlayerStats.JumpCount;
Debug.Log("Up and running...");
}
PStats.Out возвращает ожидаемые значения, но PlayerStatsвозвращает значения, которые кажутся пустыми