我们打开上一篇70QFrameWork物品交换UGUI的项目,
![](https://i-blog.csdnimg.cn/direct/a0742c6f3fcd453786b72a814a912666.png)
在资源商店免费下载图片
![](https://i-blog.csdnimg.cn/direct/9f16ff29f30b44899ee2f49deba3601c.png)
![](https://i-blog.csdnimg.cn/direct/7706ba8262334ddb8fc5432cabdd7471.png)
创建Image重命名为Icon并且隐藏Name 给Icon一张随意道具图片Icon
![](https://i-blog.csdnimg.cn/direct/7423685135254274ae001e0cb77c1114.png)
![](https://i-blog.csdnimg.cn/direct/25e6fe7522144c439151a5e802cbfe4d.png)
![](https://i-blog.csdnimg.cn/direct/d3640fca74094441b0f51d0be0394774.png)
重新绑定对象
![](https://i-blog.csdnimg.cn/direct/eba2123067db4fba83bcc467e8479dfd.png)
接下来创建IItem.cs接口 与 ItemConfig.cs道具配置类
![](https://i-blog.csdnimg.cn/direct/8c8a3595d1af450abc22a661f05a1bbf.png)
创建Config文件夹
创建脚本:ItemConfig.cs
编写脚本:ItemConfig.cs
cs
using UnityEngine;
namespace QFramework {
[CreateAssetMenu(menuName = "@ItemKit/Create Item")]
public class ItemConfig : ScriptableObject
{
public string Key;
public string Name;
public Sprite Icon;
}
}
创建自定义ScriptableObject道具
![](https://i-blog.csdnimg.cn/direct/ea92b34b3997418caca4cfdd8c832f63.png)
重命名为Iron
![](https://i-blog.csdnimg.cn/direct/369911a59c404a808f0c57adcb33f39d.png)
设置ScriptableObject属性栏
![](https://i-blog.csdnimg.cn/direct/a1adcba8d1d14d5c8a4035a49b88e27f.png)
再次创建自定义ScriptableObject道具
![](https://i-blog.csdnimg.cn/direct/a6fca8ddbf274edea564cd379f9502b5.png)
重命名为IronSword
![](https://i-blog.csdnimg.cn/direct/f75b67f660b546bdb5709e9326554c1b.png)
设置ScriptableObject属性栏
![](https://i-blog.csdnimg.cn/direct/60f54ede40d24b11a8d1b8c8e1dcc1f3.png)
创建一个空物体重命名为ConfigManager
![](https://i-blog.csdnimg.cn/direct/ef9c368fb0cd41b5bc059ba3ab410595.png)
添加View Controller组件 脚本生成目录设置为2.UGUIInventoryExample
![](https://i-blog.csdnimg.cn/direct/8cc6a72244e94235b84ffdee2bdd4ea9.png)
添加 Other Binds组件
![](https://i-blog.csdnimg.cn/direct/3cd049713b814ffd95b5926f3635fcf0.png)
将新建的两个ScriptableObject拖拽至Other Binds组件中
![](https://i-blog.csdnimg.cn/direct/4e956e28bcbc4c5e8629f24750a478da.png)
点击生成代码
![](https://i-blog.csdnimg.cn/direct/37f91c85ebb0466fbfc2be8ded6ff5aa.png)
生成代码后,ConfigManager.cs类就可以直接使用两个ScriptableObject了
编写脚本:ConfigManager.cs
cs
using UnityEngine;
using QFramework;
// 1.请在菜单 编辑器扩展/Namespace Settings 里设置命名空间
// 2.命名空间更改后,生成代码之后,需要把逻辑代码文件(非 Designer)的命名空间手动更改
namespace QFramework.Example
{
public partial class ConfigManager : ViewController,ISingleton
{
public static ConfigManager Default => MonoSingletonProperty<ConfigManager>.Instance;
public void OnSingletonInit()
{
throw new System.NotImplementedException();
}
}
}
创建接口 并让其两个子类实现接口 IItem.cs
并修改脚本实现接口:Item.cs
![](https://i-blog.csdnimg.cn/direct/980fb81391654e27a6a2d41b7f5b9d6c.png)
修改脚本实现接口:ItemConfig.cs
![](https://i-blog.csdnimg.cn/direct/712181f3344747ad92b6ce9990779ae4.png)
修改报错信息,将Key及Name改写成GetKey及GetName即可
修改实现接口:
![](https://i-blog.csdnimg.cn/direct/d716b43e55f4417abf276c6ab26b1f4d.png)
![](https://i-blog.csdnimg.cn/direct/3695a76b1dff485da8147c87245407c7.png)
增加ScriptableObject道具:
![](https://i-blog.csdnimg.cn/direct/594dce518ca94acf909cf33771ff4aae.png)
拖拽至配置管理器
![](https://i-blog.csdnimg.cn/direct/d91634e4a25941178454313a62141dea.png)
点击生成代码
![](https://i-blog.csdnimg.cn/direct/1f25b6f37f5f4c70b7047b845a7537c3.png)
修改脚本:Slot.cs
![](https://i-blog.csdnimg.cn/direct/cd6599a8c19c4872b6f9380c2f60addf.png)
修改脚本:ItemConfig.cs
![](https://i-blog.csdnimg.cn/direct/a2ba9a9fb88940d181e445b7cd8d0cf4.png)
修改脚本:UGUICanvas.cs
![](https://i-blog.csdnimg.cn/direct/5c8dac9832ca4acf93568429a6cca0ec.png)
修改脚本:ConfigManager.cs
![](https://i-blog.csdnimg.cn/direct/2d5dc444f4fa484ea0ea2d9e4cc636a0.png)
修改脚本:CanPickupItem.cs
![](https://i-blog.csdnimg.cn/direct/a2755b7febcd4a56b42e2e21fc63d983.png)
修改脚本:ItemKit.cs
![](https://i-blog.csdnimg.cn/direct/7896cf0c50ff49af82ebe272b75b5e6e.png)
![](https://i-blog.csdnimg.cn/direct/507e07c69a234c1598440da8f95164cf.png)
修改脚本:IItem.cs Item.cs
![](https://i-blog.csdnimg.cn/direct/676601bb9a8e4435be3e7a5aadccd6f2.png)
![](https://i-blog.csdnimg.cn/direct/5b526269449e4ced97142c5aa75bd5e7.png)
修改脚本:UISlot.cs
![](https://i-blog.csdnimg.cn/direct/7e76159f4ed14e68aedc249de620ea4d.png)
![](https://i-blog.csdnimg.cn/direct/8b0f4fcacdd2401d86302225c4dbe599.png)
保存后运行项目
![](https://i-blog.csdnimg.cn/direct/a2ee5daec34e46faa109568d53c5ac1c.png)
接下来的文章内容:
1.QFrameWork更新道具图片UGUI
2.位置存储功能
3.点击名称寻找地点功能
4.隐藏怪物的生成
5.怪物I攻击范围内的主动攻击
6.掉落坐骑蛋的获取
7.异步传送转换场景
以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。
具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》
![](https://i-blog.csdnimg.cn/direct/c7d660ae1364486da05b3f794103a1f1.png)