Skip to content

Instantly share code, notes, and snippets.

@kou-yeung
Last active November 8, 2018 07:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kou-yeung/e24fc28926f2fc8e205b1169e34d8dd8 to your computer and use it in GitHub Desktop.
Save kou-yeung/e24fc28926f2fc8e205b1169e34d8dd8 to your computer and use it in GitHub Desktop.
using UnityEngine;
using Unity.Rendering;
using Unity.Transforms;
[RequireComponent(typeof(PositionComponent), typeof(RotationComponent)/*, typeof(ScaleComponent)*/)] // Transform 関連
[RequireComponent(typeof(CopyTransformFromGameObjectComponent))] // GameObjectのTransform情報 -> PositionComponent & RotationComponent コピー
[RequireComponent(typeof(MeshInstanceRendererComponent))] // 描画関連
[DisallowMultipleComponent]
public class PureECSBridge : MonoBehaviour
{
private void Awake()
{
// MeshFilter や MeshRenderer を取得する
var meshFilter = GetComponent<MeshFilter>();
var renderer = GetComponent<MeshRenderer>();
// あれば、MeshInstanceRendererに情報を複製する
if (meshFilter != null && renderer != null)
{
var instanceRenderer = GetComponent<MeshInstanceRendererComponent>();
var w = instanceRenderer.Value;
w.mesh = meshFilter.sharedMesh; // メッシュ情報
w.material = renderer.sharedMaterial; // マテリアル情報 : Enable GPU Instancing が 有効しないと遅くなる
instanceRenderer.Value = w;
renderer.enabled = false; // 従来のシステムで描画しないため、無効にする
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment