if(transform)
. Связано появление этого оператора с тем, что объекты живут не только в шарповом коде, но и в плюсовой части движка. То есть в шарпе объект может быть не null, а в плюсовой части уже уничтожился, и наоборот. Но это было актуально пару лет назад, с тех пор они бэкэнд переписывали и проблем с этим я уже давно не наблюдал, считайте, что это просто остатки легаси кода. Ещё иногда про это спрашивают на собеседованиях, но это скорее мусорные знания, дизайн так себе. using UnityEngine;
public class LineExample : MonoBehaviour
{
public LineRenderer lineRenderer;
public Transform a;
public Transform b;
public float sphereRadius = 0.5f;
public int positionCount = 10;
private void Awake()
{
Vector3 aDirection = transform.InverseTransformPoint(a.position).normalized;
Vector3 bDirection = transform.InverseTransformPoint(b.position).normalized;
var fromRotation = Quaternion.identity;
var toRotation = Quaternion.FromToRotation(aDirection, bDirection);
lineRenderer.positionCount = positionCount;
for (int i = 0; i < positionCount; i++)
{
float t = i/(positionCount - 1f);
Quaternion rotation = Quaternion.Lerp(fromRotation, toRotation, t);
Vector3 point = rotation*aDirection*sphereRadius;
lineRenderer.SetPosition(i, point);
}
}
}
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
public GridLayoutGroup gridLayoutGroup;
private void Start()
{
gridLayoutGroup.cellSize = new Vector2(200, 200);
}
}