Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时更改增强对象(AR核心)的颜色_C#_Android_Unity3d_Arcore - Fatal编程技术网

C# 在运行时更改增强对象(AR核心)的颜色

C# 在运行时更改增强对象(AR核心)的颜色,c#,android,unity3d,arcore,C#,Android,Unity3d,Arcore,我正在使用AR Core SDK中的图像目标检测示例。我想在运行时通过脚本更改对象的颜色。将材质附着到该对象 // Create an anchor to ensure that ARCore keeps tracking this augmented image. Anchor anchor = image.CreateAnchor(image.CenterPose); visualizer = (AugmentedImageVisualizer)Instantiate( AugmentedI

我正在使用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);
//创建锚定以确保ARCore始终跟踪此增强图像。
锚点锚点=image.CreateAnchor(image.CenterPose);
可视化工具=(增强图像可视化工具)实例化(
augmentedimagerprefab,anchor.transform);
可视化工具。图像=图像;
m_Visualizers.Add(image.DatabaseIndex,visualizer);
render rend=visualizer.GetComponent();
rend.sharedMaterial.shader=shader.Find(“BaseColor”);
红色=新颜色(255,0,0);
rend.sharedMaterial.SetColor(“U颜色”,红色);

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

我可以通过创建具有相应颜色的材质并为AR对象提供这种类型的组件来实现(显然,您需要在inspector中将引用指定给
渲染器
颜色材质
):


如果我们尝试使用的模型有这么多子项目,它是一台机器,有很多零件,一半零件使用相同的材料颜色,有没有办法改变应用于所有这些零件的矩阵的颜色,所有零件的颜色都改变了?看起来有可能:;还没有测试过吗?是的,没有工作。它适用于普通对象,但不适用于增强对象。尽管如此,您仍然可以为您需要的每种颜色创建材质。您对此还有任何疑问吗?否则,请将我的答案标记为解决方案?
using UnityEngine;

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

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