Unity里实现更换游戏对象材质球
在unity中本来想实现在一个背景墙上更换图片的功能
在网上查了一些资料说是用Image,但我是新手小白刚接触Unity不久好多组建还不会用,就想能不能通过改变游戏对象的材质球来更换游戏对象的背景。
查了一些帖子,参看了前辈们的一些做法,实现了这个功能,现在分享给大家。我是小白一个,技术还不成熟,有些术语表达还不够准确,后来者如果看到这篇帖子,叙述不当之处还请多多包涵,这也是我在CSDN上的第一篇文章
实现过程如下:
1. 在场景中新建一个游戏对象 Creat---->3D object---->Plane
把 Panel 由水平方向调整为竖直方向,使它看起来像一块背景墙。并重新命名为Scren(意思就是作为一个屏幕)。
2. 找两张图片1和2拖到Assets中,另外在Assets下新建一个文件夹命名为Resources。将这两张图片分别拖拽到Scren上可以生成两个材质球。
在Resources文件夹中新建一个Materials文件夹,两张图片生成的两个材质球放在Materials文件夹中。
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");}
}
效果如下:
4.为什么要在Assets中新建一个Resoures文件夹,并把材质球导入其中可能是获得材质球的方法要求的吧,Resources.Load<Material>("Materials/2")。方法调用这块我还不太熟悉,以后随着学习深入再来补充吧。此处参考了一个百度贴吧中一个吧友的回复,在此表示感谢。
参考贴文地址如下:
http://tieba.baidu.com/p/4873301334
5. 结束语
这篇分享就到这里了,希望能对需要的人提供一点帮助和参考。
- 分享一个简单的unityAI框架,基于神经网络和遗传算法,可以简单的实现自成长的游戏对象
- Unity自发光材质制作——做游戏里的液晶显示屏,荧光对象可以用到
- < Unity 3D专栏 >实现游戏对象与对象之间通信
- unity,如何手动或者使用代码更换材质
- Unity3D简单实现游戏对象跟随鼠标旋转
- 【Unity常识】游戏对象及脚本的状态与Start等函数的调用关系
- Unity游戏的局域网对战功能实现
- Unity结合C++开发服务器实现多人游戏(五)
- Unity 获取游戏对象
- [unity基础教程]Unity3D实现动态加载游戏资源(转)
- Unity获取未激活游戏对象的方法
- Unity之SceneView视图中不可选择游戏对象
- 【Unity 3D游戏开发学习笔记】实现太阳系
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)
- 【转】 Unity获取游戏对象详解
- 【Unity&UGUI&Shader】创建材质球Material&代码控制更换物体材质球
- Unity相机随游戏对象的移动而移动及调整大小
- [Unity-25] Unity中让游戏对象消失或隐藏的几种方法
- unity游戏android平台获取粘贴板的文本,实现复制粘贴功能
- 【游戏渲染】unity海边波浪效果的实现