通过脚本从Holotoolkit更改Hololens SpatialMapping预制件的材料吗?

时间:2019-05-01 19:46:35

标签: c# unity3d singleton hololens partial-classes

我正在通过Unity3D版本2017.4.16f1为Microsoft Hololens创建一个项目。我已经将HoloToolkit添加到我的项目中,并且正在使用其默认的SpatialMapping预制件。我也正在使用资产商店中的HololensShaderPack,并在SpatialMapping预制件上使用其提供的着色器之一。

我的应用程序涉及点击对象/表面以从中获取颜色,并将空间网格材料的颜色更改为您从该表面“偷”的颜色。攻丝效果很好,而且颜色也不错。我要做的就是访问SpatialMappingManager脚本中找到的材料。

我的问题是我不确定如何访问部分类的成员,尤其是如果该部分类是单例的话。我对C#的这方面不太熟悉,并试图在线查找解决方案。

SpatialMappingManager脚本的定义如下,省略了不相关的部分:

library(splitstackshape)
na.omit(cSplit(df1, c("ligandId", "ligandName"), sep=",", "long"))

在其他脚本中,我正在尝试这样做:

namespace HoloToolkit.Unity.SpatialMapping
{
    [RequireComponent(typeof(SpatialMappingObserver))]
    public partial class SpatialMappingManager : Singleton<SpatialMappingManager>
    {

        [Tooltip("The material to use for rendering spatial mapping data.")]
        [SerializeField]
        private Material surfaceMaterial;

        public Material SurfaceMaterial
        {
            get
            {
                return surfaceMaterial;
            }
            set
            {
                if (value != surfaceMaterial)
                {
                    surfaceMaterial = value;
                    SetSurfaceMaterial(surfaceMaterial);
                }
            }
        }

        public void SetSurfaceMaterial(Material setSurfaceMaterial)
        {
            SurfaceMaterial = setSurfaceMaterial;
            if (DrawVisualMeshes)
            {
                foreach (MeshRenderer sourceRenderer in Source.GetMeshRenderers())
                {
                    if (sourceRenderer != null)
                    {
                        sourceRenderer.sharedMaterial = setSurfaceMaterial;
                    }
                }
            }
        }
    }
}

但是,它不允许我访问部分类的这些成员变量/函数。我也不认为是因为它是单身人士,还是我无法访问这样的部分类的成员?我还能怎么做呢?

0 个答案:

没有答案