更改文件架构
This commit is contained in:
64
Packages/Common~/Scripts/UX/VisualElement/TexturedElement.cs
Normal file
64
Packages/Common~/Scripts/UX/VisualElement/TexturedElement.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
#endif
|
||||
namespace BITKit.UX
|
||||
{
|
||||
public class TexturedElement : VisualElement
|
||||
{
|
||||
static readonly Vertex[] k_Vertices = new Vertex[4];
|
||||
static readonly ushort[] k_Indices = { 0, 1, 2, 2, 3, 0 };
|
||||
|
||||
static TexturedElement()
|
||||
{
|
||||
k_Vertices[0].tint = Color.white;
|
||||
k_Vertices[1].tint = Color.white;
|
||||
k_Vertices[2].tint = Color.white;
|
||||
k_Vertices[3].tint = Color.white;
|
||||
}
|
||||
|
||||
public TexturedElement()
|
||||
{
|
||||
generateVisualContent += OnGenerateVisualContent;
|
||||
#if UNITY_EDITOR
|
||||
m_Texture = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/tex.png");
|
||||
#endif
|
||||
}
|
||||
|
||||
Texture2D m_Texture;
|
||||
|
||||
void OnGenerateVisualContent(MeshGenerationContext mgc)
|
||||
{
|
||||
Rect r = contentRect;
|
||||
if (r.width < 0.01f || r.height < 0.01f)
|
||||
return; // Skip rendering when too small.
|
||||
|
||||
float left = 0;
|
||||
float right = r.width;
|
||||
float top = 0;
|
||||
float bottom = r.height;
|
||||
|
||||
k_Vertices[0].position = new Vector3(left, bottom, Vertex.nearZ);
|
||||
k_Vertices[1].position = new Vector3(left, top, Vertex.nearZ);
|
||||
k_Vertices[2].position = new Vector3(right, top, Vertex.nearZ);
|
||||
k_Vertices[3].position = new Vector3(right, bottom, Vertex.nearZ);
|
||||
|
||||
MeshWriteData mwd = mgc.Allocate(k_Vertices.Length, k_Indices.Length, m_Texture);
|
||||
|
||||
// Since the texture may be stored in an atlas, the UV coordinates need to be
|
||||
// adjusted. Simply rescale them in the provided uvRegion.
|
||||
Rect uvRegion = mwd.uvRegion;
|
||||
k_Vertices[0].uv = new Vector2(0, 0) * uvRegion.size + uvRegion.min;
|
||||
k_Vertices[1].uv = new Vector2(0, 1) * uvRegion.size + uvRegion.min;
|
||||
k_Vertices[2].uv = new Vector2(1, 1) * uvRegion.size + uvRegion.min;
|
||||
k_Vertices[3].uv = new Vector2(1, 0) * uvRegion.size + uvRegion.min;
|
||||
|
||||
mwd.SetAllVertices(k_Vertices);
|
||||
mwd.SetAllIndices(k_Indices);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a685df532788b6540b2b4fa9863ec050
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user