当前位置: 首页 > news >正文

网站建设结构分布网站建设的主要缺陷

网站建设结构分布,网站建设的主要缺陷,前端代码练习网站,温州网站制作价格前一篇已经使用ScriptableObject(SO)类配置可放置物体,本篇探索更多的SO类应用场景。 需求分析 将若干指定物体放在工作台上,可以生成新的物体。 成果展示 Scene部分 准备工作台,放在工作台上的物体全部放在指定PlacedObjects空物体下。 …

前一篇已经使用ScriptableObject(SO)类配置可放置物体,本篇探索更多的SO类应用场景。

需求分析

将若干指定物体放在工作台上,可以生成新的物体。

成果展示

请添加图片描述

Scene部分

准备工作台,放在工作台上的物体全部放在指定PlacedObjects空物体下。
在这里插入图片描述
准备如下几种物体及其配方:

  • 正方体;
  • 长方体 <= 两个正方体;
  • 圆柱;
  • 轮组 <= 长方体 + 圆柱;
  • 汽车 <= 两个长方体 + 两个轮组;
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上一章节以及设计了PlaceObjectTypeSO 配置所有可以放置物体,接下来需要设计配方SO类。

  • 需要定义其配方和输出的物体;

  • 每当新的物体放在工作台上,就要检查是否是配方中的物体类型,是否集齐全部物体。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

脚本部分

PlacedObjectTypeSO.cs

内容与前篇一致,修改了两个地方

1、当项目中出现多个SO类时,可以定义如下内容,使其他在editor 中合理的展示。

[CreateAssetMenu(fileName = "PlacedObjectTypeSO",menuName= "ScriptableObjects/PlacedObjectTypeSO")]

2、public Sprite sprite 仓库栏中的Image也可以配置在SO,这样更加合理。

[Serializable]
[CreateAssetMenu(fileName = "PlacedObjectTypeSO",menuName= "ScriptableObjects/PlacedObjectTypeSO")]
public class PlacedObjectTypeSO : ScriptableObject
{public GoodsName goodsName;public string nameString;public Transform prefab;public Sprite sprite;public int width;public int height;
}
CraftingRecipeSO.cs

这里检查工作台上是否集齐配方物体的逻辑:

  • 创建一个列表waitInPlaceObjectSOList,初始状态时包括所有配方物体;
  • 每当有物体放在工作台上时,检查是否是配方元素,如果是就从列表中移除对应物体。直到列表元素为0,表示已经集齐所有配方元素,输出合成的物体。
  • 成功合成的物体放回仓库栏,并清除工作台的所有物体,并恢复列表初始状态。

该逻辑只是暂时用在演示合成物体的部分,只能仅供参考,存在很多尚未考虑的内容,暂时不予解决,如:

如果两个配方存在重合的元素,如AB = A+B,ACB =A+B+C,那种A和B先放置在工作台上时,永远只能合成AB,无法合成ACB;

[CreateAssetMenu(fileName = "CraftingRecipeSO", menuName = "ScriptableObjects/CraftingRecipeSO")]
public class CraftingRecipeSO : ScriptableObject
{public PlacedObjectTypeSO outPlaceObjectSO;public PlacedObjectTypeSO[] recipeArray;private List<PlacedObjectTypeSO> waitInPlaceObjectSOList;public void Init(){waitInPlaceObjectSOList = new List<PlacedObjectTypeSO>();for (int i = 0; i < recipeArray.Length; i++){waitInPlaceObjectSOList.Add(recipeArray[i]);}}public PlacedObjectTypeSO GoodsOnTableChanged(PlacedObjectTypeSO inPlaceObjectSO){if (waitInPlaceObjectSOList == null|| waitInPlaceObjectSOList.Count==0) Init();if (waitInPlaceObjectSOList.Contains(inPlaceObjectSO)){waitInPlaceObjectSOList.Remove(inPlaceObjectSO);if (waitInPlaceObjectSOList.Count == 0){return outPlaceObjectSO;}}return null;}}
PlaceObjectBuilding.cs

大多数内容与前篇一致,需要完善工作台部分内容。
在这里插入图片描述

public class PlaceObjectBuilding : MonoBehaviour{[SerializeField] List<CraftingRecipeSO> craftingRecipeSOList;[SerializeField] Transform craftTable;private void Update(){if (selectedPlacedObjectTypeSO != null){if (Input.GetMouseButtonDown(0)){Vector3 placePosition = Mouse3D.GetMouseWorldPosition();placePosition.y = 0;Transform placeObjectTransform = Instantiate(selectedPlacedObjectTypeSO.prefab,placePosition,Quaternion.Euler(0, selectedPlacedObjectTypeSO.GetRotationAngle(dir), 0));//如果放在了工作台地板上,就将craftTable作为父物体if (Mouse3D.GetClickedTransform().parent.parent == craftTable.parent){placeObjectTransform.SetParent(craftTable);//放置的物体在所有配方中进行检查craftingRecipeSOList.ForEach(_ =>{PlacedObjectTypeSO outGoodsSo = _.GoodsOnTableChanged(selectedPlacedObjectTypeSO);//成功合成之后,清除工作台上的物品,恢复配方中的缓存列表,新物体放回仓库if (outGoodsSo != null){for (int i = 0; i < craftTable.childCount; i++){Destroy(craftTable.GetChild(i).gameObject);}craftingRecipeSOList.ForEach(recipeSo =>{recipeSo.Init();});inventory.AddGoods(outGoodsSo);};});}else if (Mouse3D.GetClickedTransform().parent == transform.parent){placeObjectTransform.SetParent(transform.parent);}DeselectObjectType();}}}
}
http://www.yayakq.cn/news/335020/

相关文章:

  • 无忧网站建设价格网站建设资质要求
  • 微信官方网站建设装企工长网站开发
  • 静态网站建设教程注册500万公司实缴多少钱
  • 龙华做网站天无涯网络重庆最大的本地交流网站
  • 网站附件做外链建设网站的好公司
  • 成都网站设计哪家比较好discuz网站名称
  • 北京建网站公司中国制造网官网首页
  • 西城专业网站建设公司哪家好百度云盘搜索引擎入口
  • 衡水哪有做网站的中国纪检监察报陈江华
  • 咨询学校网站开发费用工程建设的概念是什么
  • asp门户网站系统珠海主题网站设计模板
  • wordpress怎么做响应式网站网站开发使用哪种工具好
  • 招聘网站建设深圳招聘网站建设工作汇报
  • 企业网站建设jz190网站收录少了
  • 国家和住房城乡建设部网站首页二级建造师报考条件官网
  • 织梦制作手机网站模板免费下载合法购物网站建设
  • 我是做废品回收,最近有个变宝网主动联系我说是再生资源网站的,可信吗?dw做的网站如何使用
  • 推荐网站建设服务网站新闻字体
  • 网站建设技术选择南京自助网站建设
  • asp 企业网站源码浙江小九天建设集团网站
  • 加强网站备案管理开网店怎么开 新手需要多少资金
  • 做网站必须认证吗杭州知名的企业网站建设策划
  • 珠宝出售网站模板网站建设总体说明书
  • 优秀企业网站模板WordPress 秒开
  • 有什么网站可以做运动郑州给公司做网站的公司
  • 深圳网站制作的免费推广途径与原因
  • 网站seo优化排名wordpress jianux
  • wordpress建站百科浙江省通信管理局 网站备案 管理部门
  • 深圳网站建设公司是临沂网站建设培训
  • 网站策划与建设阶段的推广wordpress 小程序投稿