cc域名网站需要备案吗,怎么推广公司网站,如何制作简易个人网站,网站平台维护首先创建一个项目#xff0c; 在这个初始界面我们需要做一些准备工作#xff0c; 建基础通用文件夹#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色#xff0c; 任务#xff1a;使用 抽象工厂模式 创建 人物与宠物 模型#xff0c;
首先资源商店下载 人物与宠物…首先创建一个项目 在这个初始界面我们需要做一些准备工作 建基础通用文件夹 创建一个Plane 重置后 缩放100倍 加一个颜色 任务使用 抽象工厂模式 创建 人物与宠物 模型
首先资源商店下载 人物与宠物 模型 拖拽至场景中并完全解压缩 重命名为Role1放进自己的预制体包Prefabs后在场景中删除 同样手法下载宠物模型最后放进自己的预制体包Prefabs中 接下来编写代码
1.创建脚本【抽象产品类之人物类】 双击AbsRole.cs编写代码 using UnityEngine; public abstract class AbsRole{ public GameObject Role { get; set; } public abstract void Load(); } 2.创建脚本【具体产品类之人物类】 双击RoleA.cs编写代码 using UnityEngine; public class RoleA : AbsRole{ public override void Load(){ Role Resources.LoadGameObject(Prefabs/role1); if (Role ! null) Role GameObject.Instantiate(Role, new Vector3(0, 0, 0), Quaternion.identity); } } 3.创建脚本【抽象工厂类】 public abstract class AbstractFactory{ public abstract AbsRole GetRole(string type); } public class Factory : AbstractFactory{ public override AbsRole GetRole(string type){ AbsRole role; switch (type){ case RoleA: role new RoleA(); break; default: role null; break; } return role; } }
4.创建脚本【主类】 using UnityEngine; public class Main : MonoBehaviour{ public AbsRole role; public string type; void Start(){ AbstractFactory roleFactory new Factory(); role roleFactory.GetRole(RoleA); if (role ! null) role.Load(); else Debug.LogError(空引用); } } 回到unity中将主类Main类挂载在地面上Plane 运行即生成 接下来添加宠物类抽象工厂真正用到的地方
创建脚本 using UnityEngine; public abstract class AbsPet{ public GameObject Pet { get; set; } public abstract void Load(); }
创建脚本 using UnityEngine; public class PetA : AbsPet{ public override void Load(){ Pet Resources.LoadGameObject(Prefabs/pet1); if (Pet ! null) Pet GameObject.Instantiate(Pet, new Vector3(3, 0, 0), Quaternion.identity); } } 修改脚本 public abstract class AbstractFactory{ public abstract AbsRole GetRole(string type); public abstract AbsPet GetPet(string type); } 修改脚本 public class Factory : AbstractFactory{ public override AbsPet GetPet(string type){ AbsPet pet; switch (type){ case PetA: pet new PetA(); break; default: pet null; break; } return pet; } public override AbsRole GetRole(string type){ AbsRole role; switch (type){ case RoleA: role new RoleA(); break; default: role null; break; } return role; } } 修改主类 using UnityEngine; public class Main : MonoBehaviour{ public AbsRole role; public AbsPet pet; public string type; void Start(){ AbstractFactory roleFactory new Factory(); role roleFactory.GetRole(RoleA); if (role ! null) role.Load(); else Debug.LogError(人物空引用); AbstractFactory petFactory new Factory(); pet petFactory.GetPet(PetA); if (pet ! null) pet.Load(); else Debug.LogError(宠物空引用); } } 运行项目即完成 End.