Перво-наперво: у вас все в порядке с установщиком геттера.
другие вещи: во-первых, если вы выходец из мира Java, вам не нужно создавать функции для установщиков геттера:
public SetAngle(float arg) {
angle = arg;
Debug.Log("angle set to " + angle);
// Above always logs new angle as called fron Settings.cs.
}
private float GetAngle() { // only use is for debugging this issue.
Debug.Log("angle is " + angle); // Does not log newly set angle.
return angle;
}
можно преобразовать в:
public float Angle
{
get{return _angle;}
set{_angle = value;}
}
секунду, я не уверен, почему вы уничтожаете объект, не создавая его при пробуждении: но вот что вы делаете, если объект не существуетсоздать один, .... в противном случае, если объект существует, уничтожить текущий, но не создавать другой.
третий: это также относится ко второму: мы создаем синглтон, чтобы иметь только один экземпляр нашего класса,если это то, что вы хотите, есть множество способов сделать это, но вы должны установить свою переменную соответственно: в настоящее время вы устанавливаете значение (этот экземпляр), которое может измениться с (сохраненный экземпляр), и как только это произойдет,вы теряете указатели, и вы должны вызывать его в синглтон-классе:
public float Angle
{
get{return BoardScript.instance._angle;}
set{BoardScript.instance._angle = value;}
}
вместо:
public float Angle
{
get{return this._angle;}
set{this._angle = value;}
}
далее: что опять-таки связано со секундами: сначала экземпляр вашего объектаWiбудет храниться внутри переменной экземпляра, но если вы создадите другой объект, который вызывает awake (я забыл, как работал awake и его вызвали), этот объект вызовет удаление текущего объекта, я не уверен, что это поведение, которое выхочу просто сказать ...
void Awake() {
if (instance == null) {
instance = this;
}
else if (instance != this) {
Destroy(gameObject);
}
}