1.不关心生产过程,只要求结果,用于创建新的对象。
作用:用于生产一些新的对象。
实现:
1.下载资源:2D Beginner: Complete Project | 教程 | Unity Asset Storehttps://assetstore.unity.com/packages/templates/tutorials/2d-beginner-complete-project-140253
把RubySheet.png放入到Resources文件夹中
2.创建Canvas 并把标签改为MainCanvas
3.创建TestFactory.cs和UseFactory.cs两个脚本
TestFactory.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TestFactory
{
public TestFactory()
{
Initial();
}
Sprite[] rubySheet;
Transform parents;
/// <summary>
/// 加载资源
/// </summary>
public void Initial()
{
rubySheet = Resources.LoadAll<Sprite>("RubySheet");
parents = GameObject.FindGameObjectWithTag("MainCanvas").transform;
}
public GameObject CreateImage(int index,Vector2 pos)
{
GameObject tmpObj = new GameObject();
tmpObj.transform.SetParent(parents,false);
tmpObj.transform.localPosition =pos;
Image tmpImg=tmpObj.AddComponent<Image>();
tmpImg.name = "RubySheet" + index;
index %= rubySheet.Length;
tmpImg.sprite=rubySheet[index];
return tmpObj;
}
}
UseFactory.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UseFactory : MonoBehaviour
{
TestFactory testFactory;
int tmpCount=0;
// Start is called before the first frame update
void Start()
{
testFactory = new TestFactory();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
tmpCount++;
testFactory.CreateImage(tmpCount,Vector2.one*tmpCount*100);
}
}
}