上面的纹理可以换成image吗
时间: 2023-11-23 19:07:20 浏览: 28
可以,只需要将 `damageIndicatorTexture` 的类型从 `Texture2D` 改为 `Sprite` 即可。同时,需要将 `GUI.DrawTexture` 方法替换为 `GUI.DrawTextureWithTexCoords` 方法,以支持绘制 `Sprite`。
以下是修改后的示例代码:
```csharp
public class DamageIndicator : MonoBehaviour
{
public Sprite damageIndicatorSprite; // 伤害方向标识的精灵
public float damageIndicatorSize = 64f; // 伤害方向标识的大小
private Camera mainCamera;
private void Start()
{
mainCamera = Camera.main;
}
private void OnDamageTaken(Vector3 hitPosition)
{
// 将受到伤害的位置信息转换为相对于玩家摄像机的屏幕坐标
Vector3 screenPos = mainCamera.WorldToScreenPoint(hitPosition);
screenPos.y = Screen.height - screenPos.y;
// 在屏幕上绘制伤害方向标识
Rect indicatorRect = new Rect(screenPos.x - damageIndicatorSize / 2f, screenPos.y - damageIndicatorSize / 2f, damageIndicatorSize, damageIndicatorSize);
GUI.DrawTextureWithTexCoords(indicatorRect, damageIndicatorSprite.texture, new Rect(0, 0, 1, 1));
}
}
```
修改后的代码中,我们使用 `damageIndicatorSprite.texture` 获取精灵的纹理,然后将其传递给 `GUI.DrawTextureWithTexCoords` 方法来绘制。