Unity使用脚本Script改变材质Material

版权声明:本文为博主原创文章,如需转载,请注明出处: https://blog.csdn.net/MASILEJFOAISEGJIAE/article/details/84076048

Unity版本:Unity 5.6.2f1 Personal(64bit)

效果如下:


一、创建平面对象和Cube对象

首先创建1个平面plane对象和2个Cube对象,一个在上,一个在下,以确保上面的能够掉下来碰撞到下面的。Cube要加上Rigibody,勾选上Use Gravity。如下图所示:


二、实现改变材质的脚本和触发逻辑

触发逻辑要根据实际情况来实现。

本例的触发逻辑非常简单粗暴:给地板上的绿色Cube加个名为"Box"的tag,当上面的红色Cube跟别的游戏对象发生碰撞时,改变材质:
1.当碰撞到tag为"Box"的游戏对象,例如绿色Cube,改变到绿色材质。
2.当碰撞到其他游戏对象,改变到蓝色材质。

第一步:将绿色Cube的tag修改成"Box":

(一开始没有Box这个tag,要选择Add Tag进行新增)

第二步:给上面的红色Cube加上以下脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeMaterial : MonoBehaviour {
	public Material[] material;
	Renderer rend;

	// Use this for initialization
	void Start () {
		rend = GetComponent<Renderer> ();
		rend.enabled = true;
		rend.sharedMaterial = material [0];
	}

	void OnCollisionEnter (Collision col)
	{
		if (col.gameObject.tag == "Box") {	//如果撞到的游戏对象是Box
			rend.sharedMaterial = material [1];
		} else {
			rend.sharedMaterial = material [2];
		}
	}

	// Update is called once per frame
	void Update () {
		
	}
}


三、修改游戏对象的材质列表

本例中要改变的是红色Cube的材质。对红色Cube,添加完上述脚本后,将可能用上的3种材质按顺序加进去,分别为红色、绿色和蓝色材质。


参考资料:Scripting: Change Material of an Object | Unity Tutorial

猜你喜欢

转载自blog.csdn.net/MASILEJFOAISEGJIAE/article/details/84076048