2016-01-03 5 views
0

Хорошо, я получаю эту ошибку от движка Unity, и я не уверен, как ее исправить. Я пытался найти решение, но я ни к чему. Я начинаю писать сценарии, потому что я никогда раньше не писал сценарий. Мой сценарий выглядит примерно так:Unity Error CS1061

using UnityEngine; 
using System.Collections; 

[System.Serializable] 
public class Boundary 
{ 
    public float xMin, xMax, zMin, zMax; 
} 

public class PlayerBullet : MonoBehaviour 
{ 
    public float speed; 

    void FixedUpdate() 
    { 
     float moveHorizontal = Input.GetAxis ("Horizontal"); 
     float moveVertical = Input.GetAxis ("Vertical"); 

     var movement = new Vector3 (moveHorizontal, 0.0f, moveVertical); 
     var rigidbody = GetComponent<Rigidbody>(); 
     rigidbody.velocity = movement * speed; 

     object boundary = null; 
     rigidbody.position = new Vector3 
      (
      Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax), 
      0.0f, 
      Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax) 
      ); 

    } 
} 

Могу ли я получить помощь относительно того, как это исправить? Он говорит, что есть проблемы с моими xMin, xMax, zMin и zMax. Это должно быть для пуля ада и не позволяет игроку выйти за пределы, но он не может работать, если я не могу установить границы. я следовал этот учебник: https://www.youtube.com/watch?v=zJHRkdRq4BQ (Это все по сценарию в C#)

Могу ли я даже получить еще один хороший учебник, если это любая помощь?

ответ

2

От the documentation:

«типа» не содержит определения для «члена» и без расширения метода «имя» принимающему первый аргумент типа «типа» может быть найден (вы пропали без вести директива использования или ссылка на сборку?). Эта ошибка возникает при попытке вызова метода или доступа к члену класса , которого не существует.

Ваша проблема здесь:

object boundary = null; 
rigidbody.position = new Vector3 
    (
     Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax), 
     0.0f, 
     Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax) 
    ); 

Проблема заключается в том, что boundary имеет тип object и object не содержит определения для xMin, ни xMax и т.д. Для этого, чтобы работать, boundary должен быть типа Boundary, как это:

Boundary boundary = null; 
rigidbody.position = new Vector3 
    (
     Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax), 
     0.0f, 
     Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax) 
    ); 

Однако, это в свою очередь даст вам NullReferenceException, так как вы пытаетесь использовать свойства объекта, который никогда не создавался. Вы можете сделать что-то подобное, чтобы исправить это:

Boundary boundary = new Boundary 
{ 
    xMin = 134.0f; 
    xMax = 146.0f; 
    zMin = 112.0f; 
    zMax = 153.0f; 
}; // assign some values otherwise it will all default to 0.0f 
rigidbody.position = new Vector3 
    (
     Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax), 
     0.0f, 
     Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax) 
    );