unity中GetComponent获取组件中的材质的颜色,用C#写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity中GetComponent获取组件中的材质的颜色,用C#写相关的知识,希望对你有一定的参考价值。

GetComponent获取组件中的材质的颜色
transform.gameObject.GetComponent().material.color

这么写为啥不对啊,错误提示是这样:`UnityEngine.GameObject.GetComponent<T>()' cannot be inferred from the usage. Try specifying the type arguments explicitly

参考技术A T是组件类型
比如mesh就是
transform.gameObject.GetComponent<Mesh>()

我举个别的例子
curObj.transform.Find ("mesh_body").GetComponentsInChildren<SkinnedMeshRenderer> (true) [0].sharedMaterials[0].color; 这个例子里color是main color,要是获取tinycolor啥的话就是sharedMaterials[0].GetColor("_TintColor");

Unity/C# 查找对象并获取组件

【中文标题】Unity/C# 查找对象并获取组件【英文标题】:Unity/C# Find object and get component 【发布时间】:2014-02-26 17:29:48 【问题描述】:

这应该很容易:

GameObject myCube = GameObject.Find("Cubey").GetComponent<GameObject>();

刚刚出现错误 CS0309:类型 UnityEngine.GameObject 必须可转换为 UnityEngine.Component 才能将其用作泛型类型或方法 UnityEngine.GameObject.GetComponent() 中的参数 T

通常 Unity 显示的错误很有用,但这只是令人困惑。立方体不是游戏对象吗?任何指针都将不胜感激(没有双关语)。

【问题讨论】:

可能组件不是GameObjects - 您正在尝试将GetComponent&lt;T&gt; 的值分配给GameObject - 当然您想要GameComponentComponent(或其他Unity 中的等价物) 【参考方案1】:

GameObject 不是一个组件。 GameObject 附有一堆 Components。

您可以取消GetComponent 调用,只使用Find("Cubey") 的结果

GameObject myCube = GameObject.Find("Cubey");

【讨论】:

【参考方案2】:

一个简单的错误,去过那里......实际上太多次了:)

我会这样解释:

GameObject 是一种类型。 GameObject 类型只能与 GameObjects 或继承自 GameObject 的事物相关联。

这里的意思是:GameObject变量只能指向GameObjects和GameObject的子类。下面的代码指向一个 type GameObject 的组件。

GameObject.Find("Cubey").GetComponent<GameObject>();

代码显示“找到 Cubey 并指向附加到 Cubey 的 GameObject”。

我猜如上所述,您要查找的组件不是 GameObject 类型。

如果您希望变量 GameObject myCube 指向 Cubey,您可以这样做:

GameObject myCube;

void Start()
    // Lets say you have a script attached called Cubey.cs, this solution takes a bit of time to compute. 
    myCube = GameObject.FindObjectOfType<Cubey>();


// This is a usually a better approach, You need to attach cubey through the inspector for this to work.
public GameObject myCube; 

希望对遇到同样问题的人有所帮助。

【讨论】:

以上是关于unity中GetComponent获取组件中的材质的颜色,用C#写的主要内容,如果未能解决你的问题,请参考以下文章

小白_Unity引擎_获取组件和添加组件

unity基础命令

Unity中的物体移动-Rigidbody方法

unity3d UGUI怎么获取ScrollRect到组件

Unity 添加组件,删除组件,获取组件

Unity/C# 查找对象并获取组件