Unity_Renderer(sharedMaterialおよびMiaterial)
4926 ワード
sharedMaterialとMiaterialの概要:
私たちはunityエンジンを使用するとき、ある物体のmaterialを修正する必要があることがあります.UnityのRendererクラスでは、2つの方法インタフェースを提供しています.
Render,material,Render.sharedMaterial
モデルマテリアルの色を変更する必要がある場合、またはマテリアルshaderのいくつかのプロパティを変更する必要がある場合は、通常、モデルのRendererコンポーネントを取得し、materialプロパティを取得します.
簡単な例を挙げて、色を変更したりshaderを直接交換したりします.
Renderは、materialまたはsharedMaterialの2つのプロパティを使用できます.
この2つのアトリビュートの使用方法は同じですが、効率的にはsharedMaterialを使用したほうがいいです.彼は共有マテリアルで、カラーの交換やshaderの交換など、マテリアルのアトリビュートを操作しても、メモリに知恵がかかります.しかし、materialを使用すると、プロパティを交換するたびにunityが自動的に新しいmaterialをnewします.彼はアプリケーションまで...UnLoadUnuseAssets()の場合にメモリが解放されるので、materialでメモリが漏れる可能性があるので、いっそ使用しないでください.
しかし、コードではrenderを直接使用する.sharedMaterialでは、エディタ開発モードでゲームをローカルで実行していることがわかります.materialファイルはすべて修正したものが変化して、もしこれらのファイルがSVN管理センターにあれば、彼らはすべて赤い感嘆符になって、ファイルと修正されたことを表します.それは危険です.うっかりアップロードしたらどうしますか.この問題を解決するために,materialを取得するたびにプラットフォームに応じて簡単な方法を用いることができる.
これでローカルファイルの変化を心配することはありません.
まとめ:
sharedMaterialとMiaterialの違いは主にメモリ管理にありますが、プラットフォームやプログラミング環境によって異なります.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
簡単なUVテクスチャ付きアニメーション
転載先:https://www.cnblogs.com/Roz-001/p/11066081.html
私たちはunityエンジンを使用するとき、ある物体のmaterialを修正する必要があることがあります.UnityのRendererクラスでは、2つの方法インタフェースを提供しています.
Render,material,Render.sharedMaterial
モデルマテリアルの色を変更する必要がある場合、またはマテリアルshaderのいくつかのプロパティを変更する必要がある場合は、通常、モデルのRendererコンポーネントを取得し、materialプロパティを取得します.
簡単な例を挙げて、色を変更したりshaderを直接交換したりします.
1 material.color = Color.red;
2 material.shader = Resources.Load(“Shader/Alpha-Diffuse”, typeof(Shader)) as Shader;
Renderは、materialまたはsharedMaterialの2つのプロパティを使用できます.
1 Renderer render;
3 render.material;
5 render.sharedMaterial;
この2つのアトリビュートの使用方法は同じですが、効率的にはsharedMaterialを使用したほうがいいです.彼は共有マテリアルで、カラーの交換やshaderの交換など、マテリアルのアトリビュートを操作しても、メモリに知恵がかかります.しかし、materialを使用すると、プロパティを交換するたびにunityが自動的に新しいmaterialをnewします.彼はアプリケーションまで...UnLoadUnuseAssets()の場合にメモリが解放されるので、materialでメモリが漏れる可能性があるので、いっそ使用しないでください.
しかし、コードではrenderを直接使用する.sharedMaterialでは、エディタ開発モードでゲームをローカルで実行していることがわかります.materialファイルはすべて修正したものが変化して、もしこれらのファイルがSVN管理センターにあれば、彼らはすべて赤い感嘆符になって、ファイルと修正されたことを表します.それは危険です.うっかりアップロードしたらどうしますか.この問題を解決するために,materialを取得するたびにプラットフォームに応じて簡単な方法を用いることができる.
1 public static Material GetMaterial(Renderer render)
2 {
3 #if UNITY_EDITOR
4 return render.material;
5 #else
6 return render.sharedMaterial;
7 #endif
8 }
これでローカルファイルの変化を心配することはありません.
まとめ:
sharedMaterialとMiaterialの違いは主にメモリ管理にありますが、プラットフォームやプログラミング環境によって異なります.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
簡単なUVテクスチャ付きアニメーション
1 using UnityEngine;
2 using System.Collections;
3
4 public class ExampleClass : MonoBehaviour {
5 public float scrollSpeed = 0.5F;
6 public Renderer rend;
7 void Start() {
8 rend = GetComponent();
9 }
10 void Update() {
11 float offset = Time.time * scrollSpeed;
12 rend.material.mainTextureOffset = new Vector2(offset, 0);
13 }
14 }
転載先:https://www.cnblogs.com/Roz-001/p/11066081.html