только начал осваивать unity и c#, прошу не ругаться если вопрос будет глупый
пытаюсь управлять направлением и скоростью появления частиц через скрипт
вот в таком коде
Синтаксис:
Используется csharp
private ParticleSystem ps;
public void ChangeDirection(Vector3 v)
{
if (ps)
{
ps.transform.rotation = Quaternion.FromToRotation(Vector3.forward, v);
ps.main.startSpeed = v.magnitude;
}
}
направление меняется, а вот со скоростью возникает такая ошибка
error CS1612: Cannot modify a value type return value of `UnityEngine.ParticleSystem.main'. Consider storing the value in a temporary variable
насколько я понял, подсказка предлагает решать эту ошибку так
Синтаксис:
Используется csharp
private ParticleSystem ps;
public void ChangeDirection(Vector3 v)
{
if (ps)
{
ps.transform.rotation = Quaternion.FromToRotation(Vector3.forward, v);
ParticleSystem.MainModule psMain = ps.main;
psMain.startSpeed = v.magnitude;
ps.main = psMain;
}
}
public void ChangeDirection(Vector3 v)
{
if (ps)
{
ps.transform.rotation = Quaternion.FromToRotation(Vector3.forward, v);
ParticleSystem.MainModule psMain = ps.main;
psMain.startSpeed = v.magnitude;
ps.main = psMain;
}
}
но тогда возникает другая ошибка
error CS0200: Property or indexer `UnityEngine.ParticleSystem.main' cannot be assigned to (it is read-only)
и вот тут я в тупике
вопроса два:
1. как из скрипта изменить начальную скорость частиц в системе частиц, если модуль в котором она находится - рид онли?
2. в чем смысл этого CS1612? зачем такое усложнение простого кода? сталкивался с этой же проблемой даже при простой попытке изменить одну координату позиции, например "transform.position.x = 10f;". Как в таком случае писать простой и понятный код? есть ли варианты кроме ужасных
Синтаксис:
Используется csharp
transform.position = new Vector3( 10f, transform.position.y, transform.position.z );
// или
pos = transform.position;
pos.x = 10f;
transform.position = pos;
// или
pos = transform.position;
pos.x = 10f;
transform.position = pos;
? чувствую, что эта ошибка еще долго меня преследовать будет. И чтобы сразу привыкать писать правильно, прошу поделиться опытом и посоветовать что-то.