Simple Question: Setting sprite.sortingLayerName

Hello, I can’t seem to set sortingLayerName. When I set it, my sprite disappears and ends up with no layer at all. His sorting layer order seems to work fine. Below is my code followed by the console output. Do I need to set it via mask or something? Thanks for the help!!

** Edit: The problem line, I believe, is 35 **

using UnityEngine;
using System.Collections;

public class raiselayer : MonoBehaviour {

	public int sortingOrder = 0;
	private SpriteRenderer sprite;

	void Start () 
	{
		sprite = GetComponent<SpriteRenderer>();
	}
	
	void Update () 
	{

		bool Raise= Input.GetButtonDown Raise
		
		if (Raise)
		{
			Debug.Log ("Raise called");
			Raise();
		}
		
	}

	void Raise()
	{

		Debug.Log ("sprite = " + sprite);
		Debug.Log ("sprite.sortingOrder = " + sprite.sortingOrder);
		Debug.Log ("sprite.sortingLayerName = " + sprite.sortingLayerName);
	
		sprite.sortingOrder = 5;
		sprite.sortingLayerName = "building2";
		
		Debug.Log ("sprite.sortingOrder = " + sprite.sortingOrder);
		Debug.Log ("sprite.sortingLayerName = " + sprite.sortingLayerName);
	}
	
}

Console Output:

Raise Called

sprite = MySprite (UnityEngine.SpriteRenderer)

sprite.sortingOrder = 1

sprite.sortingLayerName = building1

sprite.sortingOrder = 5

sprite.sortingLayerName =

I believe you just need to reference the renderer component in your code, like so:

sprite.renderer.sortingOrder = 5;
sprite.renderer.sortingLayerName = "building2";

Try that and see if it fixes it :slight_smile:

You can only assign sorting layer names that already exist in your project. You need to go into the sorting layer editor and add “building2” manually.

Hey, bumping this thread.

I’m having the same problem with my prefabs overlapping eachother due to sorting layer (I assume)

I have 1 single prefab, The prefab has different parts, so like Head, Hat, Pants etc…
All of those parts will end up on their separate sorting layer.
Problem is, all of the instantiated prefabs with the same part, say the Hat will overlap in runtime…making a mesh, they don’t stick to their parents allocated sorting layer. How do I solve this?

I do change my Sorting layer, layer order and even Tags and Layers but Nothing works.
I mean, I can see in runtime that it DOES work, they have their new sorting layers and all that but they still overlap and act strange. what the fuck is one suppose to do about that?

SpriteRenderer rend = GraffitiLetters*.GetComponent<SpriteRenderer>();*

rend.sortingLayerName = “Letter” + i;
rend.sortingOrder = 1 + i;