找回密码
 注册帐号

扫一扫,访问微社区

Unity ScriptObject存储Prefab项目源码分享

7
回复
759
查看
[ 复制链接 ]
5熟悉之中
555/1000
排名
9775
昨日变化

4

主题

67

帖子

555

积分

Rank: 5Rank: 5

UID
226139
好友
0
蛮牛币
2633
威望
0
注册时间
2017-6-10
在线时间
393 小时
最后登录
2018-9-18
2018-5-25 14:28:47 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 继新1 于 2018-5-25 14:32 编辑

关于ScriptObject的介绍可以参加这两篇博客:
https://blog.csdn.net/candycat1992/article/details/52181814
https://blog.csdn.net/stephanie_1/article/details/68486121


这个项目是用到了对象池,并且是使用 ScriptableObject 来存数据对象

下面图2操作,创建一个资源文件GameobjectPool.asset

下面图1里有三个List数组,分别代表障碍物,特效,物品


对应SubPoolList 这个脚本中的3个数组,存储的是一种物品的池子
public class SubPoolList : ScriptableObject
{
    public List<SubPool> obstaclesGroundList = new List<SubPool>();
    public List<SubPool> effectGroundList = new List<SubPool>();
    public List<SubPool> itemList = new List<SubPool>();
}



以FX_JiaSu为例,图3中FX_JiaSu池子的4个字段,对应SubPool这个脚本中的4个字段


[Serializable]
public class SubPool
{
    //集合
    [SerializeField]
    List<GameObject> m_gos = new List<GameObject>();

    //预设
    [SerializeField]
    public GameObject m_prefab;

    //名字
    //public 可以省略[SerializeField]  
    public string name;
        

    //最大数量   m_gos数组的最大长度
    [Range(0, 10)]
    public int maxAmount = 1;

        ......

}

为什么每一个池子都有一个maxAmount字段呢?

举个例子,在跑酷游戏中,要产生5枚硬币和1辆汽车。

在这个项目中,是使用ObjectPool.Instance.Spawn(名称);来生成硬币和汽车。


如果要生成1辆汽车,则这样写:ObjectPool.Instance.Spawn("Car");  它的maxAmount = 1;
第一次生成汽车,就会生成一个汽车池子,并且调用GameObject.Instantiate(……),之后如果再生成汽车,就不会调用GameObject.Instantiate(……),
而是从汽车池子中的m_gos数组取出汽车。

如果要生成5枚硬币,则这样写:
ObjectPool.Instance.Spawn("Coin");
ObjectPool.Instance.Spawn("Coin");  
……(写5遍)

如果这时它的maxAmount = 1;那么硬币池子的m_gos数组最多就只能装一个银币。

第一次生成硬币,就会生成一个硬币池子,并且调用GameObject.Instantiate(……),之后如果再生成硬币,因为池子只能装1个硬币,那么需要移除池子中的硬币,
再往m_gos数组添加新生成的银币,这里就【又要调用GameObject.Instantiate(……)】

这时,就需要设置maxAmount = 5,才能解决问题

————————————————————

这个项目往资源文件GameobjectPool.asset添加池子,是需要在ObjectPoolEditor脚本中代码生成的,如果想手动添加,需要注意一个问题。如图4:

图1

图1

图2

图2

图3

图3

图4

图4

34-ScriptObject.txt

137 Bytes, 下载次数: 123

回复

使用道具 举报

5熟悉之中
835/1000
排名
3485
昨日变化

0

主题

203

帖子

835

积分

Rank: 5Rank: 5

UID
114090
好友
0
蛮牛币
625
威望
0
注册时间
2015-7-18
在线时间
204 小时
最后登录
2019-5-24
2018-6-10 14:35:10 显示全部楼层
学习,谢谢分享
回复

使用道具 举报

排名
24126
昨日变化

2

主题

18

帖子

54

积分

Rank: 2Rank: 2

UID
281743
好友
0
蛮牛币
113
威望
0
注册时间
2018-5-18
在线时间
12 小时
最后登录
2019-2-1
2018-6-22 09:17:04 显示全部楼层
谢谢分享~
回复

使用道具 举报

7日久生情
1752/5000
排名
4092
昨日变化

0

主题

1085

帖子

1752

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
254705
好友
1
蛮牛币
1625
威望
0
注册时间
2017-11-16
在线时间
305 小时
最后登录
2019-5-25
2018-6-25 09:02:10 显示全部楼层
6666666666666666666666666666666666
回复 支持 反对

使用道具 举报

7日久生情
2529/5000
排名
843
昨日变化

0

主题

661

帖子

2529

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
1975
好友
0
蛮牛币
1
威望
0
注册时间
2013-8-14
在线时间
694 小时
最后登录
2019-5-26

VIP

2018-7-2 10:41:07 显示全部楼层
ScriptObject存储Prefab项目源码分享
回复 支持 反对

使用道具 举报

7日久生情
2754/5000
排名
2230
昨日变化

1

主题

1768

帖子

2754

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
119154
好友
0
蛮牛币
2913
威望
0
注册时间
2015-8-21
在线时间
355 小时
最后登录
2019-5-26
2018-7-9 10:44:00 显示全部楼层
谢谢楼主大大。
回复

使用道具 举报

5熟悉之中
970/1000
排名
5017
昨日变化

4

主题

357

帖子

970

积分

Rank: 5Rank: 5

UID
191995
好友
1
蛮牛币
1838
威望
0
注册时间
2016-12-13
在线时间
309 小时
最后登录
2019-5-27
2018-8-1 11:13:20 显示全部楼层
回复

使用道具 举报

排名
48130
昨日变化

0

主题

9

帖子

15

积分

Rank: 1

UID
293799
好友
0
蛮牛币
8
威望
0
注册时间
2018-8-16
在线时间
2 小时
最后登录
2018-8-17
2018-8-16 19:00:06 显示全部楼层

感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则