前言
上一篇记录了自动生成资源引用代码的内部实现,主要是针对addressable的资源系统的,为了在加载时不会因为名字写错,加载错,也更加方便的使用addressable加载,这一篇记录下如何使用。
如何使用
之前看过,在编辑器中添加了工具按钮
我们可以在addressable的groups面板上添加几个测试资源
我加了一个预制体的group,加了一个sprite的group,现在可以测试下,这个自动生成资源引用脚本功能,按下上图中的“生成资源引用代码”在project面板生成一个R.cs脚本。
下面看下脚本的内容
using UnityEngine;
using UnityEngine.UI;
using UnityEditor.Animations;
using System;
using UnityEngine.Playables;
using JKFrame;
namespace R
{
public static class DefaultLocalGroup
{
public static GameObject bullet { get => ResSystem.LoadAsset<GameObject>("bullet"); }
public static GameObject bullet_GameObject(Transform parent = null,string keyName=null,bool autoRelease = true)
{
return ResSystem.InstantiateGameObject("bullet", parent, keyName,autoRelease);
}
}
public static class Picture
{
public static Texture2D 企业微信截图_16546835978187 { get => ResSystem.LoadAsset<Texture2D>("企业微信截图_16546835978187"); }
public static Sprite 企业微信截图_16546835978187_企业微信截图_16546835978187 { get => ResSystem.LoadAsset<Sprite>("企业微信截图_16546835978187[企业微信截图_16546835978187]"); }
}
}
怎么调用呢?
之前的博客中创建的子弹预制体已经放入到了addressable中,预制体上也挂载了子弹自己的控制脚本。
我们新建脚本用来测试这个自动生成的代码到底好不好用,然后挂载到场景中
using JKFrame;
using UnityEngine;
public class ResTest : MonoBehaviour
{
void Start()
{
//ResSystem.InitGameObjectPoolForAssetName("bullet",5,5);
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
//ResSystem.InstantiateGameObject<BulletController>("bullet", transform, "bullet").Init();
R.DefaultLocalGroup.bullet_GameObject(transform,"bullet").GetComponent<BulletController>().Init();
}
}
}
启动工程,点击鼠标左键,可以看到正常运行