方式一 ab包
private AssetBundle assett;
public List<UnityEngine.Object> objlist;
public string path ;//ab包地址
private void Start()
{assett = AssetBundle.LoadFromFile(path_new[i]);//加载ab包
objlistt.AddRange(assett.LoadAllAssets<UnityEngine.Object>());//将ab包添加到列表
}
游戏本身已经将图片素材信息排列好了,只需按照名称排列显示就行,这里不做赘述。
方式二 读取锚点信息
通过AssetStudio导出Dump获取锚点信息,根据锚点信息标定素材位置。
下面是相关代码:
public void xiugaiwenli(string path, Vector2 x)//修改锚点函数
{
TextureImporter ti = AssetImporter.GetAtPath(path) as TextureImporter;
TextureImporterSettings texSettings = new TextureImporterSettings();
ti.ReadTextureSettings(texSettings);
texSettings.spriteMeshType = (int)SpriteMeshType.FullRect;
texSettings.spriteAlignment = (int )SpriteAlignment.Custom;
texSettings.spritePivot = x;//xnew Vector2(0.2f, 0.3f);
ti.SetTextureSettings(texSettings);
ti.SaveAndReimport();
}
最终效果图,修改锚点后拼接
新版本很多素材直接绑定在预制体中,可以直接生成预制体调整动画即可,如下图:
保存本地
通过截取区域像素保存本地
public Texture2D sp4;//用于纹理处理
public Rect reccc;//截图区域信息
public RectTransform rec;//挂载脚本物体的RectTransform
public Camera captureCamera; // 用于捕获的相机
public RenderTexture captureTexture; // 渲染目标
public Vector3 worldPosition; // 世界坐标的起点
public Vector2 worldSize; // 世界坐标区域的大小
public IEnumerator SignatureSave(Rect rect)//参数传入截图区域
{
reccc.x = rec.anchoredPosition.x;
reccc.y = rec.anchoredPosition.y;
captureTexture.width = (int)rec.sizeDelta.x;
captureTexture.height = (int)rec.sizeDelta.y;
rec.gameObject.SetActive(false);
// 设置相机参数以匹配世界坐标区域
yield return new WaitForEndOfFrame();
// 设置相机的渲染目标为RenderTexture
captureCamera.targetTexture = captureTexture;
// 渲染相机到RenderTexture
captureCamera.Render();
// 从RenderTexture获取像素数据并创建Texture2D
sp4 = new Texture2D(captureTexture.width, captureTexture.height, TextureFormat.ARGB32, false);
sp4.ReadPixels(rect, 0, 0);
sp4.Apply();
// 清理RenderTexture资源
captureCamera.targetTexture = null;
captureTexture.Release();
bytes = sp4.EncodeToPNG();
File.WriteAllBytes("保存路径", bytes);
rec.gameObject.SetActive(true);
}
导出后效果图