首页 > 解决方案 > 在运行时更改增强对象(AR 核心)的颜色

问题描述

我正在使用 AR Core SDK 中的图像目标检测示例。我想通过脚本在运行时更改对象的颜色。一种材料附加到该对象。

// Create an anchor to ensure that ARCore keeps tracking this augmented image.
Anchor anchor = image.CreateAnchor(image.CenterPose);
visualizer = (AugmentedImageVisualizer)Instantiate(
AugmentedImageVisualizerPrefab, anchor.transform);
visualizer.Image = image;
m_Visualizers.Add(image.DatabaseIndex, visualizer);
Renderer rend = visualizer.GetComponent<Renderer>();
rend.sharedMaterial.shader = Shader.Find("BaseColor");
Color red = new Color(255,0,0);
rend.sharedMaterial.SetColor("_Color", red);

这是我当前的代码,我在从不同的答案中得到提示后尝试实现,但似乎没有任何效果。

标签: c#androidunity3darcore

解决方案


我可以通过创建具有相应颜色的材质并为 AR 对象提供这种类型的组件来做到这一点(显然,您需要将引用分配给检查器renderercolorMaterial在检查器中):

using UnityEngine;

public class ARObjectController : MonoBehaviour
{
    public Renderer renderer;
    public Material colorMaterial;

    public SetMaterial()
    {
        renderer.material = colorMaterial;
    }
}

推荐阅读