Unity 通过脚本修改源资源
来源:互联网 发布:vb源码下载 编辑:程序博客网 时间:2024/04/30 13:43
自动实例化
如果要修改任何游戏资源,通常希望在运行时修改,且修改是暂时的。例如,如果角色获得了无敌状态,可能想更改材质 (material) 的着色器 (shader),以便玩家角色形象地展示无敌的状态。该操作包含修改正在使用的材质。这种修改不是永久性的,因为我们不希望退出播放模式 (Play Mode) 时材质的着色器不同。
但是,在 Unity 中编写脚本永久修改源资源是可行的。我们从上面的材质示例开始说起。
若要临时更改材质的着色器,可更改材质 (material) 组件中的着色器 (shader) 属性。
private var invincibleShader = Shader.Find ("Specular");function StartInvincibility {renderer.material.shader = invincibleShader;}
使用这段脚本并退出播放模式 (Play Mode) 时,材质 (material) 的状态将重置到最初进入播放模式 (Play Mode) 前的状态。出现这种情况是因为无论何时访问 renderer.material,材质都将自动实例化并返回实例。该实例自动、同时应用到渲染器中。所以可根据自己的意愿进行更改,不必担心性能问题。
直接修改
重要须知
下述方法将修改 Unity 中使用的真正源资源文件。这些修改无法撤销。请谨慎使用。
现在,假设我们不想退出播放模式时材质重置。要做到这一点,可使用 renderer.sharedMaterial。sharedMaterial 属性将返回该渲染器(和其他渲染器)使用的真正资源。
以下代码将永久更改高光 (Specular) 着色器使用的材质。不会将材质的状态重置到开始播放模式 (Play Mode) 前的状态。
private var invincibleShader = Shader.Find ("Specular");function StartInvincibility {renderer.sharedMaterial.shader = invincibleShader;}
可以看出,对 sharedMaterial 做出任何的更改既有用又危险。这些更改将是永久性的,无法撤销。
适用的类成员
上述相同公式可应用至材质以外的项目。符合该要求的完整资源列表如下:
- 材质 (Materials):renderer.material 和 renderer.sharedMaterial
- 网格 (Meshes):meshFilter.mesh 和 meshFilter.sharedMesh
- 物理材质 (Physic Materials):collider.material 和 collider.sharedMaterial
直接指定
如果宣布一个以上任一类的公共变量:材质 (Materials)、网格 (Meshes) 或物理材质 (Physic Materials),并使用该变量而非相关的类成员修改资源,应用修改前不会获得自动实例化这一优势。
- Unity 通过脚本修改源资源
- 【Unity资源】(脚本/实用工具)
- 【Unity资源】(脚本/AI)
- unity 通过代码修改Project窗口中的Prefab资源的属性值
- 修改Unity的脚本模板
- unity 4.6新UI系统学习笔记 如何通过脚本访问并修改Text组件
- Unity简单修改UV的动画脚本
- shell脚本修改图片资源名字
- 通过ruby脚本修改文件名后缀
- 通过资源修改器去改运行程序的资源
- 在unity通过组件名称(string)添加脚本
- Unity通过脚本实现给一个物体添加子物体
- Unity——通过脚本给物体改变颜色
- 【Unity小工具】批量修改原始资源设置
- 批量修改unity的Asset下资源的文件名
- 修改unity新建脚本中默认模板的格式
- Unity编辑器扩展之修改扩展脚本的成员变量
- Unity 修改默认创建 C# Script 脚本格式
- LeetCode125——Valid Palindrome
- Hadoop报错信息:Job not successful. Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 4.
- The Open Source Interconnection (OSI) Model
- ios去掉字符串中的html标签的方法
- 【设计模式】-模板方法模式(Template)
- Unity 通过脚本修改源资源
- postgres函数
- winows运行时应用生命周期
- c++_primer_exercise_1435_1436
- nodejs使用express,express版本3.5.3使用中间件app.user(express.multipart())异常问题
- myeclipse8.5发布maven web项目
- hibernate注解方式
- STL容器(五)——heap
- ubuntu防火墙设置