Trying to work out how to get render to work as I would expect. There got be something that im not doing correctly. It only changes once press arrow on Shader Material.
The sprite that generated on the right should look like one on left.
This is the material file that use on the left
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: InspectorMaterial
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: ETC1_EXTERNAL_ALPHA _ALPHABLEND_ON
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: [ ]
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 10307, guid: 0000000000000000f000000000000000, type: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: [ ]
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.48
- _GlossyReflections: 1
- _Metallic: 0.46
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0.3764706, g: 0.05911155, b: 0.039215695, a: 0.49019608}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: [ ]
This is the code I am using to create the sprite on the left
using UnityEngine;
public class SpriteMatShader : MonoBehaviour
{
public GameObject parentGameObject;
public Material material;
public Texture2D texture2D;
Sprite sprite;
public string naming = "Script";
void Start()
{
parentGameObject = new GameObject();
parentGameObject.name = $"{naming} Parent GameObject";
Transform transformX = parentGameObject.transform;
transformX.position = new Vector3(5f, 0f, 0f);
transformX.eulerAngles = Vector3.zero;
transformX.localScale = new Vector3(5f, 5f, 1f);
BuildTheBox(parentGameObject, "", Vector3.zero, Vector3.zero, Vector3.one, 10);
}
private void BuildTheBox(GameObject parentObject, string notUsed, Vector3 localPosition, Vector3 localEulerAngles, Vector3 localScale, int sortOrder)
{
GameObject gameObject = new GameObject();
gameObject.transform.parent = parentObject.transform;
gameObject.name = $"{naming} Child GameObject";
gameObject.transform.localPosition = localPosition;
gameObject.transform.localEulerAngles = localEulerAngles;
gameObject.transform.localScale = localScale;
SpriteRenderer spriteRenderer = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer;
texture2D = MakeTexture();
sprite = MakeSprite(texture2D);
material = MakeMaterial();
spriteRenderer.sprite = sprite;
spriteRenderer.material = material;
spriteRenderer.sortingOrder = sortOrder;
}
private Texture2D MakeTexture()
{
Texture2D texture2dX = new Texture2D(1, 1, TextureFormat.RGB24, false);
texture2dX.name = $"{naming} Texture2D";
return texture2dX;
}
private Sprite MakeSprite(Texture2D texture2dX)
{
Sprite spriteX = Sprite.Create(texture2dX, new Rect(0, 0, 1, 1), new Vector2(0.5f, 0.5f), 1f);
spriteX.name = $"{naming} Sprite";
return spriteX;
}
private Material MakeMaterial()
{
Material materialX = new Material(Shader.Find("Standard"));
materialX.name = $"{naming} Material";
materialX.renderQueue = 3000;
materialX.SetColor("_Color", new Color(0.3764706f, 0.05911155f, 0.039215695f, 0.49019608f));
materialX.SetFloat("_Mode", 2f);
return materialX;
}
}