Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
UGUI Text \n 的问题
sdhexu发起了话题2017-07-03
7
回复
411
浏览


如图所示,我的物品描述使用文本解析获取。

但是,我在文本中想要换行的地方使用了\n,但是实际上他会显示“\n”而不是换行。。。

我使用:

   m_Text.text += ItemInfo.description.Replace( @"\n", "\n"); 进行了替换也不行呢??大神,怎么破?

所有回复
  • sdhexu 2017-07-03

    附上物品解析的代码,以及TextAssets Item List片段:

    
    // class ItemManager 
    // Other Code Here.....
    
        public bool LoadNativeItem()
        {
            try
            {
                if (m_items == null)
                {
                    m_items = new Dictionary<int, ItemInfo>();
                }
    
                TextAsset txt = Resources.Load<TextAsset>("TextAssets/NativeItems");
                if (txt == null)
                    throw new Exception("加载物品资源失败");
    
                string[] lines = txt.text.Split('\n');
    
                for (int i = 0; i < lines.Length; ++i)
                {
                    ItemInfo item = ParserLine(lines[i].Trim(), i);
                    if (item != null)
                    {
                        if (m_items.ContainsKey(item.id))
                            throw new Exception("存在重复物品 行数:" + (i + 1).ToString());
                        else
                            m_items.Add(item.id, item);
                    }
                }
            }
            catch (Exception e)
            {
                Debug.LogError("解析物品列表失败:" + e.Message);
            }
            return true;
        }
    
        private ItemInfo ParserLine(string line, int i)
        {
            // 空行或注释
            if (line.Length <= 0 || line.StartsWith("##"))
                return null;
    
            string[] tokens = line.Split('|');
    
            ItemInfo it = new ItemInfo();
            int c = 0;
    
            // 第0列 ID
            if (!int.TryParse(tokens[c++].Trim(), out it.id))
                throw new Exception("无效ID 行数:" + (i + 1).ToString());
    
            // 第1列 等级
            if (!int.TryParse(tokens[c++].Trim(), out it.level))
                throw new Exception("无效物品等级 行数:" + (i + 1).ToString());
    
            // 第2列 名称
            it.name = tokens[c++].Trim();
            if (it.name.Length <= 0)
                throw new Exception("无效物品名称 行数:" + (i + 1).ToString());
    
            // 第3列 描述
            it.description = tokens[c++].Trim();
    
            // 第4列 图标路径
            it.icon = tokens[c++].Trim();
            if (it.icon.Length <= 0)
                throw new Exception("无效物品图标 行数:" + (i + 1).ToString());
    
            // 第5列 种类
            it.type = (ItemType)Enum.Parse(typeof(ItemType), tokens[c++].Trim(), true);
            if (!Enum.IsDefined(typeof(ItemType), it.type))
                throw new Exception("无效物品种类 行数:" + (i + 1).ToString());
    
            // 第6列 品质
            it.quality = (ItemQuality)Enum.Parse(typeof(ItemQuality), tokens[c++].Trim(), true);
            if (!Enum.IsDefined(typeof(ItemQuality), it.quality))
                throw new Exception("无效物品品质 行数:" + (i + 1).ToString());
    
            // 第7列 售价
            if (!float.TryParse(tokens[c++].Trim(), out it.price))
                throw new Exception("无效物品售价 行数:" + (i + 1).ToString());
    
            // 第8列 CD
            if (!float.TryParse(tokens[c++].Trim(), out it.cd))
                throw new Exception("无效CD时间 行数:" + (i + 1).ToString());
    
            // 计算物品特效数量
            int EffCount = 0;
    
            // 忽略材料及卷轴的物品特效
            if ((it.type != ItemType.Material) && (it.type != ItemType.Appraisal))
            {
                EffCount = Mathf.Max(0, tokens.Length - c);
                if (EffCount < 3 || EffCount % 3 != 0)
                    throw new Exception("缺少消耗品特效描述 行数:" + (i + 1).ToString());
                EffCount /= 3;
            }
    
            if (EffCount > 0)
            {
                it.effects = new BuffBase[EffCount];
    
                // 第9列之后 物品效果
                for (int e = 0; e < EffCount; ++e)
                {
                    BuffBoostType boost = (BuffBoostType)Enum.Parse(typeof(BuffBoostType), tokens[e * 3 + c].Trim(), true);
                    if (!Enum.IsDefined(typeof(BuffBoostType), boost))
                        throw new Exception("无效消耗品特效 行数:" + (i + 1).ToString());
                    float v;
                    if (!float.TryParse(tokens[e * 3 + c + 1].Trim(), out v))
                        throw new Exception("无效消耗品特效值 行数:" + (i + 1).ToString());
                    float d;
                    if (!float.TryParse(tokens[e * 3 + c + 2].Trim(), out d))
                        throw new Exception("无效消耗品持续时间 行数:" + (i + 1).ToString());
    
                    if (it.type == ItemType.Expendable)
                    {
                        // 消耗品,建立临时Buff
                        it.effects[e] = new TempBuff(boost, v, d);
                    }
                    else
                    {
                        // 装备,建立永久Buff
                        it.effects[e] = new ItemBuff(boost, v);
                    }
                }
            }
            return it;
        }
    ## NativeItemList.TXT
    ##
    ## SDHeXu Item List Ver 3.00
    ## ID | Level | Name | Description | Icon | Type | Quality | Price | CD | BoostList< BoostType|BoostValue|Life >...
    ## ItemType: Expendable WeapopSword WeaponMagic Cap Jacket Trousers Shoes Ring Necklace Material Appraisal
    ## Quality: Normal, Excellent, Rare, Legendary, Epic
    ## BuffBoostType: HP HPPercent MP MPPercent [ Expendable ]
    ## BuffBoostType: HPMax HPMaxPercent HPRecover MPMax MPMaxPercent MPRecover Damage DamagePercent Defense
    ##                DefensePercent ReduceDamagePercent CritProbability CritDamagePercent DodgeProbability
    ##                MoveSpeed MoveSpeedPercent SuckBloodPercent ReflectDamagePercent
    ##
    1001|1|微型生命恢复剂|能够立即轻微恢复生命的药剂|Drug/HP1|Expendable|Normal|30|0.3|HP|60|0
    1002|1|小型生命恢复剂|能够立即恢复少量生命的药剂|Drug/HP2|Expendable|Normal|60|0.3|HP|100|0
    1003|1|中型生命恢复剂|能够立即恢复中量生命的药剂|Drug/HP3|Expendable|Normal|100|0.5|HP|150|0
    1004|1|大型生命恢复剂|能够立即恢复大量生命的药剂|Drug/HP4|Expendable|Excellent|150|0.5|HP|200|0
    1005|1|超大型生命恢复剂|能够立即恢复足量生命的药剂|Drug/HP5|Expendable|Excellent|240|0.8|HP|300|0
    1006|1|浓缩型生命恢复剂|经过浓缩后的立即型生命恢复剂|Drug/HP6|Expendable|Rare|450|0.8|HP|500|0
    1007|1|精华型生命恢复剂|经过浓缩和提炼后的立即型生命恢复剂|Drug/HP7|Expendable|Rare|1000|1|HP|1000|0
    1008|1|微型快速生命药剂|能够快速轻微恢复生命的药剂|Drug/HPP1|Expendable|Normal|150|0.3|HPPercent|0.1|0
    1009|1|小型快速生命药剂|能够快速恢复少量生命的药剂|Drug/HPP2|Expendable|Excellent|280|0.3|HPPercent|0.15|0
    1010|1|中型快速生命药剂|能够快速恢复中量生命的药剂|Drug/HPP3|Expendable|Excellent|400|0.5|HPPercent|0.2|0
    1011|1|大型快速生命药剂|能够快速恢复大量生命的药剂|Drug/HPP4|Expendable|Rare|600|0.5|HPPercent|0.25|0
    1012|1|超大型快速生命药剂|能够快速恢复足量生命的药剂|Drug/HPP5|Expendable|Rare|800|0.8|HPPercent|0.3|0
    1013|1|浓缩型快速生命药剂|经过浓缩后的快速型生命恢复剂|Drug/HPP6|Expendable|Legendary|1000|0.8|HPPercent|0.35|0
    1014|1|精华型快速生命药剂|经过浓缩和提炼后的快速型生命恢复剂|Drug/HPP7|Expendable|Legendary|1500|1|HPPercent|0.5|0
    1015|1|微型医疗剂|在短时间内持续恢复生命的药剂|Drug/HPR1|Expendable|Normal|40|10|HPRecover|10|10
    1016|1|小型医疗剂|在较短时间内持续恢复生命的药剂|Drug/HPR2|Expendable|Normal|100|20|HPRecover|10|20
    1017|1|中型医疗剂|在一定时间内持续恢复生命的药剂|Drug/HPR3|Expendable|Normal|200|30|HPRecover|10|30
    1018|1|大型医疗剂|在较长时间内持续恢复生命的药剂|Drug/HPR4|Expendable|Excellent|300|40|HPRecover|10|40
    1019|1|超大型医疗剂|在长时间内持续恢复生命的药剂|Drug/HPR5|Expendable|Excellent|480|50|HPRecover|10|50
    1020|1|浓缩型医疗剂|在很长时间内持续恢复生命的药剂|Drug/HPR6|Expendable|Rare|900|60|HPRecover|15|60
    1021|1|精华型医疗剂|在很长时间内持续快速恢复生命的药剂|Drug/HPR7|Expendable|Rare|1300|60|HPRecover|20|60
    1022|1|微型魔力恢复剂|能够立即轻微恢复魔力的药剂|Drug/MP1|Expendable|Normal|20|0.3|HP|60|0
    1023|1|小型魔力恢复剂|能够立即恢复少量魔力的药剂|Drug/MP2|Expendable|Normal|40|0.3|HP|100|0
    1024|1|中型魔力恢复剂|能够立即恢复中量魔力的药剂|Drug/MP3|Expendable|Normal|80|0.5|HP|150|0
    1025|1|大型魔力恢复剂|能够立即恢复大量魔力的药剂|Drug/MP4|Expendable|Excellent|120|0.5|HP|200|0
    1026|1|超大型魔力恢复剂|能够立即恢复足量魔力的药剂|Drug/MP5|Expendable|Excellent|200|0.8|HP|300|0
    1027|1|浓缩型魔力恢复剂|经过浓缩后的立即型魔力恢复剂|Drug/MP6|Expendable|Rare|380|0.8|HP|500|0
    1028|1|精华型魔力恢复剂|经过浓缩和提炼后的立即型魔力恢复剂|Drug/MP7|Expendable|Rare|800|1|HP|1000|0
    1029|1|微型快速魔力药剂|能够快速轻微恢复魔力的药剂|Drug/MPP1|Expendable|Normal|100|0.3|HPPercent|0.1|0
    1030|1|小型快速魔力药剂|能够快速恢复少量魔力的药剂|Drug/MPP2|Expendable|Excellent|180|0.3|HPPercent|0.15|0
    1031|1|中型快速魔力药剂|能够快速恢复中量魔力的药剂|Drug/MPP3|Expendable|Excellent|280|0.5|HPPercent|0.2|0
    1032|1|大型快速魔力药剂|能够快速恢复大量魔力的药剂|Drug/MPP4|Expendable|Rare|400|0.5|HPPercent|0.25|0
    1033|1|超大型快速魔力药剂|能够快速恢复足量魔力的药剂|Drug/MPP5|Expendable|Rare|580|0.8|HPPercent|0.3|0
    1034|1|浓缩型快速魔力药剂|经过浓缩后的快速型魔力恢复剂|Drug/MPP6|Expendable|Legendary|800|0.8|HPPercent|0.35|0
    1035|1|精华型快速魔力药剂|经过浓缩和提炼后的快速型魔力恢复剂|Drug/MPP7|Expendable|Legendary|1200|1|HPPercent|0.5|0
    1036|1|微型医疗剂|在短时间内持续恢复魔力的药剂|Drug/MPR1|Expendable|Normal|30|10|HPRecover|10|10
    1037|1|小型医疗剂|在较短时间内持续恢复魔力的药剂|Drug/MPR2|Expendable|Normal|80|20|HPRecover|10|20
    1038|1|中型医疗剂|在一定时间内持续恢复魔力的药剂|Drug/MPR3|Expendable|Normal|160|30|HPRecover|10|30
    1039|1|大型医疗剂|在较长时间内持续恢复魔力的药剂|Drug/MPR4|Expendable|Excellent|240|40|HPRecover|10|40
    1040|1|超大型医疗剂|在长时间内持续恢复魔力的药剂|Drug/MPR5|Expendable|Excellent|400|50|HPRecover|10|50
    1041|1|浓缩型医疗剂|在很长时间内持续恢复魔力的药剂|Drug/MPR6|Expendable|Rare|900|60|HPRecover|15|60
    1042|1|精华型医疗剂|在很长时间内持续快速恢复魔力的药剂|Drug/MPR7|Expendable|Rare|1300|60|HPRecover|20|60
    1043|1|生命强化剂|传说中喝下后能使人更加强壮的药水|Drug/HPMAX1|Expendable|Rare|5000|0|HPMax|50|0
    1044|1|强力生命强化剂|传说中喝下后能使人更加强壮的药水|Drug/HPMAX2|Expendable|Rare|10000|0|HPMax|100|0
    1045|1|魔力强化剂|传说中喝下后能使人魔力加强的药水|Drug/MPMAX1|Expendable|Rare|4000|0|MPMax|50|0
    1046|1|强力魔力强化剂|传说中喝下后能使人魔力加强的药水|Drug/MPMAX2|Expendable|Rare|8000|0|MPMax|100|0
    1047|1|血玲珑提取液|喝下后在一定时间内让人更强壮|Drug/HPMT1|Expendable|Normal|300|60|HPMax|100|60
    1048|1|血玲珑精华提取剂|喝下后在一定时间内让人更强壮|Drug/HPMT2|Expendable|Normal|500|60|HPMax|300|60
    1049|1|天香蜜露|喝下后在一定时间内魔力加强|Drug/MPMT1|Expendable|Normal|200|60|MPMax|100|60
    1050|1|大瓶天香蜜露|喝下后在一定时间内魔力加强|Drug/MPMT2|Expendable|Normal|400|60|MPMax|300|60
    1051|1|首阳参汁|喝下后在一定时间内加快生命恢复速度|Drug/HPTR1|Expendable|Normal|600|60|HPRecover|5|120
    1052|1|魔阴草精华液|喝下后在一定时间内加快魔力恢复速度|Drug/MPTR1|Expendable|Normal|500|60|MPRecover|5|120
    1053|1|龙鳞草|吃下后皮肤会隐约出现龙鳞状的纹路|Drug/LLC1|Expendable|Normal|100|60|Defense|20|60
    1054|1|变异的龙鳞草|吃下后皮肤会隐约出现龙鳞状的纹路|Drug/LLC2|Expendable|Rare|500|120|Defense|50|120
    1055|1|紫幽花|吃下后迅速恢复生命和魔力|Drug/HPMP1|Expendable|Normal|400|0.3|HP|100|0|MP|100|0
    1056|1|刺葵|吃下后皮肤会暂时长出尖刺|Drug/CK1|Expendable|Normal|200|60|ReflectDamagePercent|0.3|60
    1057|1|魔芙|吃下后魔力能暂时得到加强|Drug/MF1|Expendable|Normal|300|80|MPMaxPercent|0.2|80
    2001|1|魔石法杖|初级法师常用的武器,上面镶嵌着一颗\n魔力之石|Weapon/msfz|WeaponMagic|Normal|100|0|Damage|10|0|MPMaxPercent|0.1|0
    2002|1|雷霆之杖|据说制作该法杖极为困难,需要灌输雷电之力|Weapon/ltzz|WeaponMagic|Normal|120|0|Damage|15|0|MPRecover|0.5|0
    2003|1|灵玉骨杖|不知用何种生物的腿骨镶嵌灵玉而成\n十分难得|Weapon/lygz|WeaponMagic|Normal|180|0|Damage|25|0|CritProbability|0.02|0
    2004|1|虎头杖|外观如同老虎般威严同时具有老虎般的威力|Weapon/htz|WeaponMagic|Normal|220|0|Damage|35|0|CritProbability|0.02|0|CritDamagePercent|0.1|0
    2005|1|青铜剑|初级剑士常用的武器,使用青铜锻造|Weapon/qtj|WeapopSword|Normal|100|0|Damage|10|0|HPMaxPercent|0.1|0
    2006|1|玄铁剑|使用玄铁打造的剑,锋利异常|Weapon/xtj|WeapopSword|Normal|120|0|Damage|25|0
    2007|1|陨金剑|一种天外陨金打造的宝剑,十分珍贵|Weapon/yjj|WeapopSword|Normal|200|0|Damage|25|0|DamagePercent|0.05|0|CritProbability|0.03|0
    2008|1|火云之刃|此剑通体火红,能使敌人迅速丢失生命|Weapon/hyzr|WeapopSword|Normal|400|0|Damage|25|0|SuckBloodPercent|0.1|0
    

     

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-07-04

    Replace ("\\n""\n")   使用这个替换下

    • sdhexu 2017-07-04

      siki大神,这个也试过了。。。不可以呢。。

      (0) 回复
    • sdhexu 2017-07-04

      Replace("\\n", "\n") 跟 Replace( @"\n", "\n" ); 应该是一个意思吧。。。
      这两个我都试过了。都是不行呢。

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-07-04

    输出到控制台看看是什么字符串

    • sdhexu 2017-07-06

      感谢siki大神。。。
      问题已解决。其实并不是Replace("\\n","\n")不起作用,实在是我不小心搞错了变量。。。。
      我的UI系统已经趋于完善。。。学到了很多东西,感谢siki大神。

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-07-06

    O(∩_∩)O好的

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!