原始图像似乎仅适用于UI。但是,UI对象(面板或画布)似乎不能包含对撞机。
我尝试的相反解决方案是使用3d面板,但我不知道如何将原始图像(png文件)转换为材质。是否可以在平面游戏对象中显示png图像?
我想要包含一段代码,如:
void OnTriggerStay(Collider col)
{
// TODO called when the game object that includes this script is collided
// (if it has a Collider component with isTrigger enabled)
}
到目前为止,我的解决方法是使用带有对撞机的3d游戏对象和带有原始图像的分离的UI游戏对象。对我来说这似乎很糟糕,但也许这是最好的解决方案!
答案 0 :(得分:2)
是的,这是可能的,但对撞机不应与UI组件一起使用。
如果要执行此操作,请将“画布渲染模式”更改为“世界空间”:
然后手动修改Collider以适合RawImage。给它一个深度,使它不平坦:
如果您决定使用3D对象,那么VTodorov的回答应该是这样做的。
使用简单的平面,您可以通过脚本执行此操作:
public Texture2D yourTeture;
public GameObject plane;
void Start()
{
MeshRenderer meshRenderer = plane.GetComponent<MeshRenderer>();
meshRenderer.material.mainTexture = yourTeture;
}
答案 1 :(得分:1)
您可以非常轻松地在Unity中创建素材。只需将您的图像导入Unity,然后点击资产 - &gt;创建 - &gt;材料。选择您的材料并将图像拖动到检查器(应该有一个名为“无(纹理2D)”的字段或类似的字段)。然后,您可以将材料应用于任何所需的对象。