在unity中本来想实现在一个背景墙上更换图片的功能

在网上查了一些资料说是用Image,但我是新手小白刚接触Unity不久好多组建还不会用,就想能不能通过改变游戏对象的材质球来更换游戏对象的背景。

查了一些帖子,参看了前辈们的一些做法,实现了这个功能,现在分享给大家。我是小白一个,技术还不成熟,有些术语表达还不够准确,后来者如果看到这篇帖子,叙述不当之处还请多多包涵,这也是我在CSDN上的第一篇文章(转载)Unity里实现更换游戏对象材质球-LMLPHP

实现过程如下:

1. 在场景中新建一个游戏对象 Creat---->3D object---->Plane

把 Panel 由水平方向调整为竖直方向,使它看起来像一块背景墙。并重新命名为Scren(意思就是作为一个屏幕)。

(转载)Unity里实现更换游戏对象材质球-LMLPHP

2. 找两张图片1和2拖到Assets中,另外在Assets下新建一个文件夹命名为Resources。将这两张图片分别拖拽到Scren上可以生成两个材质球。

(转载)Unity里实现更换游戏对象材质球-LMLPHP

在Resources文件夹中新建一个Materials文件夹,两张图片生成的两个材质球放在Materials文件夹中。

(转载)Unity里实现更换游戏对象材质球-LMLPHP

3. 新建一个脚本文件 imagePlay.cs,并把这个脚本拖拽到Scren游戏对象上,完成Scren对象绑定脚本的操作。在imagePlay.cs中写入如下代码,就可实现运行时Scren有背景的效果。如果需要更换背景就在update( )函数中写更换背景的条件。

红色为核心代码

void Start () {

this.gameObject.GetComponent<MeshRenderer>().material = Resources.Load<Material>("Materials/1");

}

这是我在另外一个文件中设置的一个照片切换的变量flag,读者可以根据自己的需要去写这个Update()函数,核心代码就是那一句获得材质球并显示出来。

void Update () {
if (CameraSwitch.flag==2)
{this.gameObject.GetComponent<MeshRenderer>().material = Resources.Load<Material>("Materials/2");}

}

效果如下:

(转载)Unity里实现更换游戏对象材质球-LMLPHP

4.为什么要在Assets中新建一个Resoures文件夹,并把材质球导入其中可能是获得材质球的方法要求的吧,Resources.Load<Material>("Materials/2")。方法调用这块我还不太熟悉,以后随着学习深入再来补充吧。此处参考了一个百度贴吧中一个吧友的回复,在此表示感谢。

(转载)Unity里实现更换游戏对象材质球-LMLPHP

参考贴文地址如下:

http://tieba.baidu.com/p/4873301334

5. 结束语

这篇分享就到这里了,希望能对需要的人提供一点帮助和参考。

---------------------
作者:lee图图
来源:CSDN
原文:https://blog.csdn.net/lee514/article/details/80797098

04-23 14:30