tôi lấy đoạn mã sau từ HexConverter - Unify Community WikiFormatException khi sử dụng "X" cho hexadecimal định dạng
string hex = color.r.ToString("X2") + color.g.ToString("X2") + color.b.ToString("X2");
này mang lại cho tôi những ngoại lệ:
FormatException: The specified format 'X2' is invalid
tôi đã cố gắng sau đó sử dụng "D"
nhưng ngay cả điều này đã ném một lỗi. Điều duy nhất làm việc là "F
để định dạng số phao.
Đi đến khai báo tiết lộ mscorlib.dll/System/Single.ToString (chuỗi) trong trình duyệt hội - có vẻ tốt cho đến nay.
Googling cho định dạng chuỗi đơn sắc hex hoặc các chuỗi tìm kiếm tương tự không hiển thị bất kỳ điều gì thú vị về các hạn chế trong MonoDevelop.
Vì vậy, có bất cứ điều gì để chuẩn bị, khởi tạo, ... trước khi tôi có thể nhận được một chuyển đổi giá trị hex đơn giản?
[Cập nhật] Màu sắc là một struct trong Unity:
public struct Color
{
public float r;
public float g;
public float b;
// ...
Lấy câu trả lời DTB của tôi cuối cùng đã nhận nó làm việc sử dụng:
int r = (int)(color.r * 256);
int g = (int)(color.g * 256);
int b = (int)(color.b * 256);
string hex = string.Format ("{0:X2}{1:X2}{2:X2}", r, g, b);
Vì vậy, tôi đã bỏ lỡ một thực tế rằng Color
định nghĩa của nó thành phần là float
thay vì int
và các loại tích hợp mà dtb đã đề cập.
[Update-2] giải pháp More thanh lịch:
Color32 color32 = color;
string hex = color32.r.ToString ("X2") + color32.g.ToString ("X2") + color32.b.ToString ("X2");
Chúng ta có thể thấy lời tuyên bố của mình về màu sắc? hoặc là nó trực tiếp tạo thành wiki? – emd
Là một thử nghiệm đơn giản, tôi đã sử dụng 'System.Drawing.Color.White.R.ToString (" X2 ")' và nhận được là String return 'FF'. Vì vậy, có, "màu" trong ví dụ của bạn là gì? – DonBoitnott
@emd Đó là cấu trúc 'Color' của Unity. Trong wiki họ sử dụng 'Color32' khác nhau. Đây là điểm kết hợp với câu lệnh của dtb về kiểu 'Single'. Cảm ơn :-) – Kay