ArgumentOutOfRangeException:索引和长度必须引用字符串中的某个位置

问题描述

我的脚本有问题,如果有人能提供帮助,我将不胜感激。

问题来了:

ArgumentOutOfRangeException:索引和长度必须引用字符串中的某个位置。 参数名称:长度 System.String.Substring (system.int32 startIndex,system.int32 length) (at :0)

脚本是:

 public class ColorTypeConverter
 {
     public string ToRGBHex(Color c)
     {
         return string.Format("{0:X2}{1:X2}{2:X2}",ToByte(c.r),ToByte(c.g),ToByte(c.b));
     }
 
     private static byte ToByte(float f)
     {
         f = Mathf.Clamp01(f);
         return (byte)(f * 255);
     }
     
    private int HexToDec (string hex)
    {
        int dec = System.Convert.ToInt32(hex,16);
        return dec;
    }
    
    private float HexToFloatnormalized(string hex) {
        return HexToDec(hex) / 255f;
    }

    public Color GetColorFromString(string hexString) {
        float red = HexToFloatnormalized(hexString.Substring(0,2));
        float green = HexToFloatnormalized(hexString.Substring(2,2));
        float blue = HexToFloatnormalized(hexString.Substring(4,2));
        return new Color(red,green,blue);
    }
 }

UI 管理器脚本:

string s = PlayerPrefs.GetString("savecolorground");
ColorTypeConverter col = new ColorTypeConverter();
if(s != "")
    ground.GetComponent<SpriteRenderer>().color = col.GetColorFromString(s);
else
    ground.GetComponent<SpriteRenderer>().color = col.GetColorFromString("FFFFFF");

播放器脚本:

ColorTypeConverter colCon = new ColorTypeConverter();
string color = PlayerPrefs.GetString("savecolor");  
if(color != "")
    GetComponent<SpriteRenderer>().color = colCon.GetColorFromString(color);
else
    GetComponent<SpriteRenderer>().color = colCon.GetColorFromString("2AFCFF");

GetComponent<TrailRenderer>().startColor = new Color(
    GetComponent<SpriteRenderer>().color.r,GetComponent<SpriteRenderer>().color.g,GetComponent<SpriteRenderer>().color.b,255);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)