【Unity】【C#】UGUI实现读取道具时候的问题

《黑暗之光》RPG游戏案例学习(8)——第四章 游戏任务系统 游戏任务系统任务界面任务的接受与完成(1)点击NPC时,出现任务描述(2)接受任务后,出现任务提示(3)完成任务后,提交获取奖励其他设计添加按钮音效鼠标指针管理系统 参考:RPG游戏《黑暗之光》流程介绍与代码分析之(四):任务系统的实现. 任务界面 任务NPC模型的导入、任务UI界面的设计 导入NPC模型,为NPC模型添加box collider. 设计任务对话框,主要使用UGUI来设计。 将需... 阅读详情

通过UGUI实现黑暗之光的教程的内容的道具信息读取时候遇到的问题:

读取的道具图片名字Icon_name在Unity中显示正常,可是只有最后一个图片的读取正常

文本道具信息如下:

1001,小血瓶,icon-potion1
1002,中血瓶,icon-potion2
1003,小蓝瓶,icon-potion3
1004,小盾,icon-shield
1005,中盾,icon-shield1

文本分割代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectsInfo : MonoBehaviour {
    public TextAsset objectInfoListText;
    public static ObjectsInfo _instance;
    private Dictionary<int, ObjectInfo> infoDic = new Dictionary<int, ObjectInfo>();

    private void Awake()
    {
        _instance = this;
        ReadInfo(); 
    }

    public ObjectInfo GetObjectInfoById(int id)
    {
        ObjectInfo info = null;
        infoDic.TryGetValue(id, out info);
        return info;
    }
//===================================
//错误出现在ReadInfo()  根据个人测试
//===================================
    void ReadInfo()
    {
        string text = objectInfoListText.text;
        string[] item = text.Split('\n');
        //通过换行分割每个道具的所有信息
        foreach (string itemInfo in item)
        {
            ObjectInfo objInfo = new ObjectInfo();
            //通过逗号分割每个道具的每条信息
            string[] infoA = itemInfo.Split(',');
            objInfo.id = int.Parse(infoA[0]);
            objInfo.name = infoA[1];
            objInfo.icon_name = infoA[2];
            infoDic.Add(objInfo.id, objInfo);
        }
    }
}
public class ObjectInfo
{
    public int id;
    public string name;
    public string icon_name;
}

读取道具信息代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class InventoryItemGrid : MonoBehaviour {

    public Image mObject;

    public int objId;
    public ObjectInfo objInfo;
    public Sprite sprite;

    //通过按下X键盘,对某个道具信息进行更换
    
	void Update () {

        if (Input.GetKeyDown(KeyCode.X))
        {

            mObject = transform.Find("Inventory-Item").GetComponent<Image>();
            objId = Random.Range(1001, 1006);
            objInfo = ObjectsInfo._instance.GetObjectInfoById(objId);
            //以上内容生成道具Id,然后通过道具Id获取道具Icon_name
            //以下通过Resources.Load(path),对Resources文件夹对应名字的资源进行存入内存
            string path = objInfo.icon_name;
            print(objInfo.Incn_name);
            sprite = Resources.Load<Sprite>(path);
            mObject.sprite = sprite;

        }
    }
}

运行后出现错误:

除了最后一个道具信息的图片能被正确读取出来使用,其他道具的图片信息均读不出来。

可是Unity反馈的icon_name与资源文件夹的对应文件名字相同。

 

设定只更改icon_potion3来进行测试问题

//只能生成Id1003的物品,即对应的物品图片名称为 icon-potion3
objId = Random.Range(1003, 1004);
objInfo = ObjectsInfo._instance.GetObjectInfoById(objId);
string s = "icon-potion3";
string path = objInfo.icon_name;
print("s:" + s);
print("path:"+objInfo.icon_name);
print(s.Equals(path));

通过比较字符串,发现如下问题:

在Console显示的s 和 path 是一样的字符串,可是比较出来的结果为false

然后根据对汇编的回想,,发现可能就出现在对换行符分割的时候出了问题:

Split('\n');

通过Vs 附加到Unity 

在局部变量里面发现 path 字符串实际内容是"icon-potion3\r"

由此发现我们分割脚本的时候,除了最后一个(最后一个不需要对换行符分割)icon_name外,

存储的字符串内容都多出了一个\r 回车符

 

解决方法:

既然发现问题,解决方法显然。

并且多种。

按照上述思维的话可以选择改成Split('\r');

《黑暗之光》RPG游戏案例学习(9)——第五章 游戏背包系统(1) 游戏背包系统(1)搭建基本数据类搭建背包UI 我使用ugui的方法,与siki老师的课程不太一样,根据各方面的教程来学习,结果不一定成功,但也记录一下。 搭建基本数据类 创建Item脚本为数据的基类 public enum ItemType { Drug,Armor,Weapon} public class Item : MonoBehaviour { public int ID { get... 阅读详情

相关推荐

unity 中读取文本中的物品信息

一、分析物品属性 物品种类     药品 Rrug (1000)     准备 Equip(2000)     材料 Mat(3000) 1、以药瓶为例: 0 1 2 3 4 5 6 7 id 名称 Icon名称 类型(药品Drug)

typistw的专栏 2538

Unity3D-项目总结-RPG黑暗之光单机

开发项目:RPG黑暗之光单机 开发软件:Unity5.3+VS2015 开发时间:30天 开发过程: 1.场景搭建 2.开始界面,角色选择界面 3.角色控制(移动,视角,视野,状态机) 4.功能模块 (1)任务 (2)背包,物品 (3)状态 (4)装备 (5)技能 (6)商店(武器,药品) 5.游戏界面(头像,血量,经验,地图,功能栏,快捷栏) 6.敌人控制(状态机)

游戏人生 2462

Unity UGUI界面溶解效果

@Unity #基于Shader实现UGUI界面的溶解效果 前段时间要做一个类似的界面的切换效果,发现用溶解实现比较不错; 网上关于溶解效果的实现原理比较多,这里也不做过多的赘述,核心的思路就是对像素进行剔除,实在找不到的可以去这里看看。因为我们要做的效果是一个固定方向开始的效果,所以要在溶解的同时设定起始的一个坐标! 定义一个fixed2 的坐标 _NoiseCentrePos;需要注意的一点是,我们实际是和uv的坐标做运算,所以_NoiseCentrePos的取值范围也是[0 - 1]。 fixed2

weixin_41767333的博客 2250

Unity RPG 黑暗之光 问题记录 下(64-110 技能、装备商店、头像栏、快捷栏、敌人攻击系统、玩家攻击系统)

64-技能系统 数据读取 数据 表 黄色枚举,红色没有的 数据 文本 数据 读取 背包时是itemList,读取属性时各有不同,无法统一, 这种方式是为了方便读取,所有需要的数据表都可以在DataHub上读取到,不用写重复写名字各异的单例,比如ItemTextAssetToList._intanse.itemList, SkillIextAssetToList._intanse.skillList 现在写 DataHub._instance.itemList DataHub._instance.skil

weixin_39538253的博客 1621

Unity 道具生成详细步骤及代码

详细描述了UNITY中道具生成的方法及步骤,笔记中有效果截图和代码

简单的CenterOnChild实现工程

简单的CenterOnChild实现工程

UGUI 读取JSON动态克隆背包道具信息

修改JSON文件后,可在编辑器中使用"重新加载JSON数据"菜单更新。这样就完成了从Excel到JSON再到Unity背包的完整流程!确保预制体结构与代码中的GetChild索引匹配。将预制体和Content拖到对应位置。运行游戏即可看到从JSON加载的道具。:必须严格按照JSON格式,可使用。与导入的Sprite名称完全一致。将Excel另存为CSV格式。:确保预制体结构与代码中的。将道具图片导入Unity。图片命名与JSON中的。:JSON文件必须放在。

leoysq的博客 1100

UNITY5.5 自带UI系统 UGUI源码分享(最新版)

UNITY5.5 自带UI系统 UGUI源码, 可以替换本地安装中的unityengine.dll文件

Unity中Gif动图在UGUI上播放

Unity中Gif动图在UGUI上播放效果图需要System.DrawingC#脚本C#脚本最后 效果图 需要System.Drawing 将System.Drawing.dll 导入工程 C#脚本 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + S...

weixin_40755949的博客 5647

UGUI循环滚动+滑动居中

支持横向纵向循环滚动和滑动居中,支持任意锚点布局(没有锚点限制),3种居中效果(不回弹,回弹,双向回弹)Grid(布局)不依赖任何脚本可以单独使用,不锁定子物体随意排序。WrapCententy(循环+居中)

UGUI的UI框架

一套简单易用的UGUI框架,含自己的demo

如何利用UGUI在Unity中实现一个本地排行榜

实现本地排行榜

书封影的博客 2833

weblogic启动异常故障处理(boot认证失败)

root 用户生成的文件属主为 root,WebLogic进程将无权读取,直接导致认证失败。· ⚠️ 密码必须完全一致:第3步 AdminAccount 命令中设置的密码,与第5步所有 boot.properties 文件中 password= 字段的值,必须保证完全一致。如果您的域下配置了受管服务器实例(如 ms_server1、ms_server2 等),必须逐一更新各实例下的免密启动文件,确保实例重启时密码与AdminServer保持一致,否则实例启动会因认证失败而报错。此步骤至关重要,必须执行。

weixin_53389944的博客 220

Unity实时读取天气预报等信息在UGUI显示 附带Demo导入unity直接可用

Unity实时读取天气预报等信息在UGUI显示  附带Demo导入unity直接可用 部分代码:  IEnumerator Post(string url, Dictionary&lt;string, string&gt; post)     {         //表单         WWWForm form = new WWWForm();         //从集合中取出所有参数,设置...

QWBin的博客 2500

【物理模拟】PBD算法详解

参考MatthiaMuller的十分钟物理(他就是PBD算法的发明者)

beidou111的博客 9498

基于ROS与Gazebo的多机器人三角形编队仿真实践

本文详细介绍了基于ROS与Gazebo的多机器人三角形编队仿真实践,从环境搭建到编队控制的全过程。通过TurtleBot3机器人模型和TF坐标系系统,实现三个机器人的三角形编队控制,适用于机器人协同作业与编队算法研究。

weixin_29313817的博客 187

Unity中UniWebView与UGUI动态布局实现内嵌网页适配与交互

在Unity应用开发中,内嵌网页视图(WebView)是实现用户协议、活动公告、第三方登录等功能的常见需求。其核心原理是将网页内容渲染为纹理,通过RawImage组件集成到UGUI系统中。这项技术的关键价值在于打破应用与网页的体验隔阂,实现无缝的一体化交互。在工程实践中,开发者常面临网页尺寸适配与Unity C#同网页JavaScript双向通信两大挑战。通过结合UniWebView插件的集成渲染模式与UGUI的RectTransform、自动布局系统,可以动态控制WebView的显示区域,实现响应式布局。

weixin_30599769的博客 398

【Unity】【2D】用连续图片生成动画Animation的简明步骤

本文介绍了Unity中使用2D连续图片制作2D动画Animation的简明步骤。

O青草O的博客 Unity和游戏制作知识分享 715

Unity 2021+ 迁移老版ToLua/LuaFramework_UGUI:编译错误与运行时问题全解析

在游戏开发中,.NET版本升级与程序集依赖管理是保障项目稳定运行的基础技术。.NET Standard作为跨平台API规范,其API集与传统的.NET Framework存在差异,可能导致旧代码中引用的特定命名空间(如System.Configuration)失效,引发编译错误。理解程序集定义(Assembly Definition)的模块化原理,能有效管理代码依赖、避免循环引用,这是构建可维护大型项目的关键。这些技术对于实现代码复用、提升编译效率和确保跨版本兼容性具有重要价值,尤其在Unity引擎升级、整

588

信号处理算法:离散余弦变换(DCT)_(1).离散余弦变换(DCT)概述

离散余弦变换的数学定义如下:对于一个长度为NNN的离散信号xnx(n)xn,其DCT变换后的系数XkX(k)XkXk∑n0N−1xncos⁡πNn12kk012N−1Xkn0∑N−1​xncosNπ​n21​kk012N−1其中,kkk是频率指数,nnn是时间或空间索引。离散余弦变换(DCT)是一种强大的信号处理技术,广泛应用于图像压缩、音频处理、数据压缩等领域。

2401_87715305的博客 1553

工业级实战:C#上位机集成YOLO实现多目标跟踪(含数据库存储+报表导出)

推理核心:ONNX Runtime实现C#直接推理YOLO模型,GPU优先+CPU降级适配工业机;跟踪核心:SORT算法轻量级实现多目标跟踪,保证工业场景实时性与稳定性;数据核心:MySQL存储+本地缓存,Excel报表标准化导出,满足工业数据追溯与质检需求;部署核心:模型优化、GPU加速、开机自启,保证工业级7x24小时运行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 474

【Unity】UGUI怎么计算RectTransform中的Top和Bottom的值

这个是我在使用UGUI中最蛋疼的一个属性,它明明就在那里,但是你却无法调用..... 所以所以所以,我查了和试了它的好多方法,终于解决了......希望对大家有所帮助 using UnityEngine; using System.Collections; using UnityEngine.UI; /// /// 脚本位置:UGUI的图片 /// public class test :

Zok93 4177

C#中通过Mapster实现轻量级高效对象映射器:从零到精通

本文介绍了.NET生态中高性能对象映射库Mapster的完整使用指南。从基础安装(通过NuGet包)到快速入门示例,展示了如何实现简单对象映射。进一步讲解了自定义映射规则、命名不一致属性的处理方式,以及如何在ASP.NET Core中集成Mapster服务。针对复杂场景,详细解析了嵌套对象映射的配置技巧,并提供了性能优化方案(如预编译映射器)和调试技巧(启用调试模式、捕获映射异常)。通过完整的代码实践,帮助开发者高效解决从基础到高级的对象映射需求。

墨夶的博客 742

Psd2UnityuGUIPro3.0.2资源文件介绍:将 PSD 快速转化为 Unity uGUI 界面

Psd2UnityuGUIPro3.0.2资源文件介绍:将 PSD 快速转化为 Unity uGUI 界面 【下载地址】Psd2UnityuGUIPro3.0.2资源文件介绍 Psd 2 Unity uGUI Pro 3.0.2 是一个专为开发者设计的强大工具,帮助将PSD文件高效转换为Unity的uGUI界面。此资源不...

gitblog_06734的博客 737

京东豆自动领取脚本配置教程

腾讯云/阿里云服务器(Docker环境):全自动跑脚本领京豆(无需本地代理,使用加速源)

AIOT魔法师 855

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Unity UGUI Mask 原理

文章摘要: Unity UGUI中的Mask组件通过模板缓冲区(Stencil Buffer)实现遮罩效果,而非直接切割子物体Mesh。Mask利用同对象上的Graphic组件生成遮罩形状,通过特殊的Stencil Material将形状写入缓冲区。子物体使用Equal比较函数进行模板测试,测试失败的片元被丢弃。系统通过绘制顺序、Stencil Bit和Mask操作隔离不同遮罩层级,并使用Pop Material恢复模板状态。分析涉及核心文件包括Mask.cs、MaskableGraphic.cs等,揭示了

yasin的博客 240

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 【C#】利用var类型以及Split()输入整型数组
下一篇: 【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--主要基类
Terrell21
博客等级 码龄9年 39粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值