Может ли скрипт для единства просто быть публичной переменной - PullRequest
1 голос
/ 26 апреля 2019

Я пытался добавить сценарий, который привязывает глобальный рейтинг повреждения к объекту, однако сценарий выдал ошибку консоли,

ошибка CS0120: ссылка на объект требуется для не-статическое поле, метод или свойство AttackStat.atk

Так что я запутался, есть ли необходимость в сценарии единства, с которым я не встречаюсь, или что-то в этом роде, я новичок в программировании в единстве

Спасибо за ваше время

Attackstat.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AttackStat : MonoBehaviour
{
    public float atk;

}

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Решение 1:

Как указано в сообщении об ошибке, atk является членом экземпляра класса AttackStat, вам необходимо создать экземпляр / объект класса для доступаих.

Например:

AttackStat attackStatInstance = new AttackStat();
float  vlueObject = attackStatInstance.atk // It is accessible now 

Решение 2:

Если вы действительно хотите использовать atk без создания экземпляра (скажем, AttackStat.atk) тогда переменная должна быть определена как статическая, то есть определение будет выглядеть следующим образом:

public class AttackStat : MonoBehaviour
{
    public static float atk;
}
1 голос
/ 26 апреля 2019

Ответ ДА, отметьте Статические члены

public class AttackStat : MonoBehaviour
{
    public static float atk;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...