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
比如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 显示的错误很有用,但这只是令人困惑。立方体不是游戏对象吗?任何指针都将不胜感激(没有双关语)。
【问题讨论】:
可能组件不是GameObject
s - 您正在尝试将GetComponent<T>
的值分配给GameObject
- 当然您想要GameComponent
或Component
(或其他Unity 中的等价物)
【参考方案1】:
GameObject
不是一个组件。 GameObject
附有一堆 Component
s。
您可以取消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#写的主要内容,如果未能解决你的问题,请参考以下文章