Я работаю над игрой.Часть находится в автономном режиме, а другая - по сети.Я создал копию моего скрипта для работы в автономном режиме.В моем скрипте нет ошибки (monobehaviour), но когда я попытался добавить компонент в моем GameObject unity, выдается ошибка:
"Невозможно добавить компонент скрипта 'RocketOffline', так как класс скриптане может быть найден. Убедитесь, что нет ошибок компиляции и что имя файла и имя класса совпадают "
Я не вижу никаких ошибок в моем скрипте и имена совпадают (RocketOffline.cs
VS RocketOffline : MonoBehaviour
)
Я пытался повторно импортировать мой скрипт, повторно импортировать все ресурсы и скопировать весь мой код в другой скрипт, но, похоже, ничего не работает ...
I 'У меня такая же проблема с другим скриптом, но я покажу только один из них
public class RocketOffline : MonoBehaviour
{
public GameObject Explosion;
private Vector3 Direction;
private Color Couleur;
private float vitesse;
private float multiplieur;
int NumPlayer;
void Explose(Vector3 position)
{
ExplosionOffline instance = Instantiate(Explosion, position, new Quaternion()).GetComponent<ExplosionOffline>();
instance.NumPlayer = NumPlayer;
foreach (var SmokeEffect in GetComponentsInChildren<ParticleSystem>())
{
SmokeEffect.transform.parent = null;
Destroy(SmokeEffect.gameObject, SmokeEffect.startLifetime);
SmokeEffect.Stop();
}
Destroy(gameObject);
}
private void OnCollisionEnter(Collision collision)
{
Explose(transform.position);
}
private void OnTriggerExit(Collider other)
{
GetComponent<Collider>().isTrigger = false;
}
public void SetSpeed(Vector3 _Direction, float _Vitesse, JoueurOffline _Player)
{
Direction = _Direction;
vitesse = _Vitesse;
Couleur = _Player.Couleur;
NumPlayer = _Player.NumPlayer;
}
void Start()
{
Rigidbody rigid = GetComponent<Rigidbody>();
transform.eulerAngles = Vector3.forward * Mathf.Atan2(-Direction.x, Direction.y) * Mathf.Rad2Deg;
rigid.velocity = Direction * vitesse;
multiplieur = transform.localScale.y / 10;
GetComponentInChildren<MeshRenderer>().material.color = Couleur;
}
void Update()
{
GetComponent<Rigidbody>().velocity = transform.up * vitesse;
RaycastHit info;
Physics.Raycast(new Ray(transform.position, GetComponent<Rigidbody>().velocity * Time.deltaTime), out info);
if (info.distance < vitesse * Time.deltaTime * multiplieur/* && info.collider.gameObject != gameObject && info.collider.gameObject != player.gameObject*/)
{
Explose(info.point);
}
}
}
Я хочу добавить свой скрипт только на мой GameObject
, как обычно на Unity.Но всегда есть одна и та же ошибка.Мой скрипт был протестирован на другом проекте и работает отлично.Я думаю, что это, вероятно, внутренняя ошибка единства.