【发布时间】:2019-09-14 01:52:08
【问题描述】:
所以我试图制作一个完整的精灵,它分为两部分,一个是头部,另一个是身体。
我在检查器中设置了 2 个纹理,并通过我想要的代码创建了另一个纹理。 我所做的是获取我想要的身体像素并设置它们。这里没问题,当我想放头部时问题就来了,因为它是128x128的,我没有全部使用,所以它会选择这个的透明像素并删除身体的。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MSSGameHandler : MonoBehaviour
{
[SerializeField] private Texture2D baseTexture;
[SerializeField] private Texture2D headTexture;
[SerializeField] private Texture2D bodyTexture;
[SerializeField] private Material guestMaterial;
private Sprite mysprite;
private void Awake()
{
Texture2D texture = new Texture2D(512, 512, TextureFormat.RGBA32, true);
Color[] spriteSheetBasePixels = baseTexture.GetPixels(0, 0, 512, 512);
texture.SetPixels(0, 0, 512, 512, spriteSheetBasePixels);
Color[] bodyPixels = bodyTexture.GetPixels(0, 0, 128, 128);
texture.SetPixels(0, 256, 128, 128, bodyPixels);
Color[] headPixels = headTexture.GetPixels(0, 0, 128, 128);
texture.SetPixels(0, 294, 128, 128, headPixels);
texture.Apply();
guestMaterial.mainTexture = texture;
//mysprite = Sprite.Create(texture)
}
}
【问题讨论】:
-
在
SetPixels中你会覆盖 all 现有像素是的 ... -
是的,我想知道如果它是透明的,如何不设置,我不知道是否已经存在方法或什么
-
您将两个纹理组合成一个而不是仅使用两个渲染器是否有特殊原因?如果您真的需要创建一个全新的纹理,使用计算着色器组合这两个纹理可能会得到您想要的结果。
-
@Ruzihm 是的,因为如果我将它放在 2 个不同的物体中,头部会放在身体后面,如果我改变顺序,头部可以放在树和那些东西前面