Unity 6.3
0 онлайн 79 гостей 3 в системе
Вход

Sprite.OverrideGeometry

Declaration

public void OverrideGeometry(Vector2[] vertices, ushort[] triangles);

Параметры

Параметр Описание
вершины Массив вершин в пространстве Sprite Rect.
треугольники Массив индексов треугольников сетки спрайта.

Описание

Настраивает новую геометрию Sprite.

Положения вершин находятся в пространстве Sprite.rect, что означает от Rect.zero до Rect.size. Смещение поворота и преобразование в единичное пространство происходит автоматически.

Размер массива треугольников всегда должен быть кратным 3. Вершины, связанные с треугольником, могут быть разделены путем простого индексирования в одну вершину.

Sprite UVs рассчитывается автоматически путем отображения указанной геометрии на текстуру Sprite.

Тип сетки Sprite будет изменен на SpriteMeshType.Tight при вызове API.

Дополнительные ресурсы: Sprite.rect.

В примере скрипт ниже показано, как можно использовать API.

// Switch a Sprite's geometry between a triangle and a quad.
using UnityEngine;

public class ExampleClass : MonoBehaviour { private SpriteRenderer m_SpriteRenderer; private Rect m_ButtonPos; void Start() { m_SpriteRenderer = gameObject.AddComponent<SpriteRenderer>(); // Create a blank Texture and Sprite to override later on. var texture2D = new Texture2D(64, 64); m_SpriteRenderer.sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.zero, 64);

m_ButtonPos = new Rect(10.0f, 10.0f, 200.0f, 30.0f); }

// Use OverrideGeometry to switch the Sprite's mesh to a triangle or quad void ChangeSprite() { Sprite o = m_SpriteRenderer.sprite; if (o.triangles.Length != 3) { var sv = new[] { new Vector2(0, 0), new Vector2(o.textureRect.width, 0), new Vector2(o.textureRect.width * 0.5f, o.textureRect.height), }; var indices = new ushort[] { 0, 1, 2 }; o.OverrideGeometry(sv, indices); } else { var sv = new[] { new Vector2(0, 0), new Vector2(o.textureRect.width, 0), new Vector2(o.textureRect.width, o.textureRect.height), new Vector2(0, o.textureRect.height), }; var indices = new ushort[] { 0, 1, 2, 2, 3, 0 }; o.OverrideGeometry(sv, indices); } }

void OnGUI() { if (GUI.Button(m_ButtonPos, "Perform OverrideGeometry")) ChangeSprite(); } }