unity 改变图片颜色16进制
时间: 2025-01-03 12:31:50 浏览: 8
### 实现方法
为了在 Unity 中通过 C# 脚本改变 Sprite 图片的颜色为 16 进制值,可以采用如下方式:
当目标是调整带有 `Image` 组件的对象颜色时,在脚本里获取该组件并设置其颜色属性即可。对于十六进制颜色转换成 Color 类型,则需编写辅助函数完成此过程。
```csharp
using UnityEngine;
using UnityEngine.UI;
public class ChangeColor : MonoBehaviour {
void Start() {
Image img = GetComponent<Image>();
string hexColor = "#FF0000"; // Replace with your desired color.
img.color = HexToColor(hexColor);
}
private Color HexToColor(string hex){
// Remove any '#' character at the start of the string.
if (hex.StartsWith("#")) {
hex = hex.Substring(1);
}
byte r = byte.Parse(hex.Substring(0,2), System.Globalization.NumberStyles.HexNumber);
byte g = byte.Parse(hex.Substring(2,2), System.Globalization.NumberStyles.HexNumber);
byte b = byte.Parse(hex.Substring(4,2), System.Globalization.NumberStyles.HexNumber);
return new Color32(r,g,b,255);
}
}
```
上述代码展示了如何创建一个简单的 MonoBehavior 来更改附加到 GameObject 的 UI Image 颜色[^2]。这里定义了一个名为 `HexToColor` 方法用于把给定的字符串形式的十六进制颜色码转译成为 Unity 可识别的颜色对象。
如果要操作的是场景内的常规 Sprite Renderer 对象而非 UI 元素的话,只需将上面提到的 `Image` 替换成 `SpriteRenderer` 即可适用同样的逻辑来变更渲染器所使用的色彩[^1]。
阅读全文