版本:Unity 6 (6000.0)
语言英语
  • C#

Sprite.OverrideGeometry

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读来自用户的每个建议的更改,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,无法提交您建议的更改。请在几分钟后重试。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

声明

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

参数

vertices Sprite Rect 空间中的顶点位置数组。
triangles Sprite 网格三角形索引的数组。

说明

设置新的 Sprite 几何。

顶点位置在 Sprite.rect 空间,表示从 Rect.zeroRect.size。偏移量和到单位空间的变换将自动完成。

三角形数组的大小必须始终是 3 的倍数。连接到三角形的顶点可以通过简单索引到相同顶点来共享。

Sprite UV 由系统自动计算,方法是将提供的几何映射到 Sprite 的纹理上。

调用 API 时,Sprite 的网格类型将更改为 SpriteMeshType.Tight

其他资源: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(); } }