Member 14536847 Ответов: 1

Ошибка C# unity, не удается использовать строку


привет, ребята, я торчу здесь уже пару часов, я хочу спросить об ошибке unity
тай для всех кто хочет ответить на этот вопрос


он сказал, что
Цитата:
UnityException: RandomRangeInt не может быть вызван из конструктора MonoBehaviour (или инициализатора поля экземпляра), вместо этого вызовите его в Awake или Start. Вызывается из скрипта 'стены' на Уолл-игровой объект''.
Дополнительные сведения см. на странице "сериализация сценариев" в руководстве Unity.
UnityEngine.Случайный.Круг (Система.Типа int32 мин, система.Типа int32 максимальное) (в C:/buildslave/unity/build/Runtime/Export/Random/Random.bindings.cs:48)
wall..ctor () (at Assets/Scripts/wall.cs:11)


а это и есть код
public class wall : MonoBehaviour
{

    public Vector3 spawnPoint;

    private Transform camPos;
    private int ranXPos = Random.Range(-5, 6);

    void Start()
    {
        transform.position = new Vector3(ranXPos, spawnPoint.y, spawnPoint.z);
        camPos = GameObject.Find("Main Camera").GetComponent<Transform>();
    }


    void Update()
    {
        transform.position += Vector3.back;

        if (transform.position.z < camPos.position.z)
        {
            Destroy(gameObject);
        }
    }
}



EDIT: есть новая проблема, когда я не могу использовать строку
это и есть код
<pre><pre>got the problem like that,anyone know why i cant use string?

<pre>    

public class player : MonoBehaviour
{
    public Text distancemoved;
    public float speed;
    float distanceunit = 0;
    public Rigidbody rigid;

    void Start()
    {
................
................
}
    void distance() {
        int distanceunit = 0;
        distanceunit = distanceunit + 1;
        distancemoved = distanceunit.ToString();
    }
}


тай ребята
кто-нибудь может помочь?
тай ребята

Что я уже пробовал:

пытаюсь переписать тут и там, но ничего не решаю. Я очень новичок в программировании

1 Ответов

Рейтинг:
8

Richard MacCutchan

Цитата:
UnityException: RandomRangeInt не может быть вызван из конструктора MonoBehaviour (или инициализатора поля экземпляра), вместо этого вызовите его в Awake или Start. Вызывается из скрипта 'стены' на Уолл-игровой объект''.
Вы пытаетесь использовать его в своем инициализаторе экземпляра:
private int ranXPos = Random.Range(-5, 6);

Поэтому переместите инициализацию в свой метод запуска.
private int ranXPos;

void Start()
{
    ranXPos = Random.Range(-5, 6);
    transform.position = new Vector3(ranXPos, spawnPoint.y, spawnPoint.z);
    camPos = GameObject.Find("Main Camera").GetComponent<Transform>();
}