一开始就从大的方向建立起一堆逻辑代码,然而对于一个新手来说,大的逻辑是正确的

小的毛病很多,这就造成了很多小的逻辑的麻烦

替换精灵,如果精灵已经建立起来,并且有了标签tag的时候,遍历同一个标签的物体,将是最好的打算,然后在

把范围缩小,使得最后找到目标

动态更换物体的2D精灵最简单的两句代码

这个路径是Resources文件夹下面的ImageSprite/BodyCloth/Clothtest001/Clothtest001B/hand/文件夹的Cloth_Left_Hand_1文件,不管是什么,最好是对应的图片

Sprite spr = Resources.Load<Sprite>("ImageSprite/BodyCloth/Clothtest001/Clothtest001B/hand/Cloth_Left_Hand_1");//生成精灵
        gameObject.GetComponent<SpriteRenderer>().sprite = spr;

然后遍历相同标签的物体

foreach (var cloth_respawn in cloth_respawns)
         {
             Debug.Log(cloth_respawn.name);
         }

这个遍历函数也是正确的,那么就开始判断

foreach (var cloth_respawn in cloth_respawns)
         {
             string sprspr = Cloth_RPath + cloth_respawn.name;//获得文件路径
            Debug.Log(sprspr);//查看 是否是正确的
            Sprite spr = Resources.Load<Sprite>(sprspr);//生成精灵
                cloth_respawn.gameObject.GetComponent<SpriteRenderer>().sprite = spr;//再看这句话是否正确执行
         }

发现大量 要替换的精灵 没有被替换成想要的精灵

看着看着发现是因为,有的 相同标签的物体的精灵 其中有一部分是不用 换精灵的,在

  Sprite spr = Resources.Load<Sprite>(sprspr);//生成精灵

使用了Debug.Log(spr.name);

                cloth_respawn.gameObject.GetComponent<SpriteRenderer>().sprite = spr;//再看这句话是否正确执行

发现报错,spr不存在,没有实例化。既然没有实例化,那么就是为空的,如果不为空,那么Debug.Log(spr.name);说不定就可以

foreach (var cloth_respawn in cloth_respawns)
         {
             string sprspr = Cloth_RPath + cloth_respawn.name;
            Debug.Log(sprspr);
            //下面的精灵图片的文件路径
            Sprite spr = Resources.Load<Sprite>(sprspr);//生成精灵
            if (spr != null)
            {
                cloth_respawn.gameObject.GetComponent<SpriteRenderer>().sprite = spr;
            }
         }

然后发现的确是这样,当这个精灵为空的时候,UNITY并不知道,然后就出现了错误

发现替换精灵的图片的名称不对,这个时候,就要重新导入图片,使得图片和精灵的名称一致

路径太长ImageSprite/BodyCloth/Clothtest001/Clothtest001B/hand/Cloth_Left_Hand_1,缺少斜杠

逻辑的方向是对的,就要从一点一滴开始实践

【Unity精灵】2D精灵图片替换常见的问题相关推荐

  1. Unity WebGL 2D精灵图在手机端浏览器显示蓝色

    因为原图分辨率较大,为了清晰度,更改了MaxSize超过2048后,该图会在手机端浏览器显示为淡蓝色.

  2. Unity ~2D精灵动画制作

    Unity 中如果要进行2D游戏的开发,刚开始没有选择2D创建项目的时候,需在Unity 中进行设置 1.Etid–>Project Settings–>Etidor 2.将相机设置为正焦 ...

  3. unity怎么用精灵

    怎样判断是否应该使用精灵 在一套UI中,精灵是一种非常常见的元件.当制作UI时,如果需要显示一张图片,需要先判断这个图片是否应该制作到图集里去,然后用精灵的方式去使用它,一般来说,可以遵循以下规律. ...

  4. unity学习笔记-精灵集和精灵动画

    2D游戏中,对精灵的操作需求,往往是两点: 1. 静态精灵:一般做背景展示等 2. 精灵动画:帧动画.骨骼动画等 声明:以下对Unity的操作,基于Unity3D 4.3.4,本人初学Unity,没用 ...

  5. cocos2dx 3.x(动态改变精灵的背景图片)

    //更换精灵CCSprite的图片有两种方式. //直接通过图片更换 //使用setTexture(CCTexture2D*)函数,可以重新设置精灵类的纹理图片. // auto bg = Sprit ...

  6. Unity打开电脑本地文件夹选择图片替换

    Unity打开电脑本地文件夹选择图片替换 创建工程添加对应的UI如图所示 创建ChangeImage脚本来监听按钮事件 创建OpenFileName脚本 将代码挂在到窗口,点击运行 创建工程添加对应的 ...

  7. threejs使用精灵图添加图片贴图

    threejs添加精灵图片 使用精灵图添加图片贴图 使用精灵图添加图片贴图 const sprite = new THREE.Sprite(new THREE.SpriteMaterial({map: ...

  8. Unity的2D图集处理,并切割出一张张小图片

    (转载请注明出处:http://blog.csdn.net/hongyouwei/article/details/45011315) 在我们找资源的时候,有时候会遇到那种把一堆图片放进一张png图片里 ...

  9. cocos2dx学习之路(七)——精灵、精灵旋转、淡入、水平翻转、自由移动、九宫格精灵

    理解精灵的含义 学会创建一个精灵 掌握对精灵的控制 了解九宫格精灵及其应用 Sprite在2D游戏场景设计中指的就是像素图可以移动可以控制 1.通过图片路径创建精灵 Sprite* sprite = ...

最新文章

  1. AI语音独角兽思必驰完成数亿元Pre-IPO融资,冲刺苏州AI创业第一股
  2. html5 video标签不能播放视频,h5 video 视频不能正常播放
  3. 【机器学习】算法模型自动超参数优化方法
  4. keil_rtx特点
  5. java锁实现_Java锁实现
  6. big类型和double类型
  7. chm打开空白(chm打开空白)
  8. Facebook母公司:混合现实走向市场还需要数年时间
  9. 初识C语言,一起迈入编程世界的大门
  10. 六级英语 之 经济贸易
  11. Directx11教程(49) stencil的应用-镜面反射
  12. 剑指 Offer II 076. 数组中的第 k 大的数字
  13. 中国全国及各地人口总数和男女比例情况
  14. 22nd Century向FDA递交该公司极低尼古丁含量香烟的改良风险烟草产品(MRTP)申请
  15. 虚拟现实在文物古迹方面的应用
  16. 一文带你了解Java8之Stream
  17. 头条暑期训练营往期题目及个人答案
  18. android 电池监控软件,电池监控器 Battery Monitor Widget Pro for Android
  19. Linux-(16)管道和重定向
  20. FTP主动模式和被动模式的工作流程

热门文章

  1. pam mysql安装_安装pam-mysql
  2. html中上下左右控制对象移动Demo
  3. 实现百度第三方登陆详细解答
  4. 缓存穿透和缓存雪崩的一些解决方案
  5. Redis——模拟手机验证码发送
  6. Soda Theme sublime 自定义编辑器主题
  7. No matching version found for @soda/friendly-errors-webpack-plugin@1.8.0.
  8. 量化交易日记20210120
  9. 语言与区域设置ID (Language ID、Locales ID / LCID)
  10. 蓝牙mesh-拓扑结构