public void SetSpriteWithOffset() { SpriteWithOffset[] os = SpriteWithOffset.CreateFromJson(jsonFile.text); Dictionary <string, SpriteWithOffset> d = new Dictionary <string, SpriteWithOffset>(); foreach (var o in os) { d.Add(o.name, o); } foreach (var sr in spriteRenderers) { SpriteWithOffset o = null; if (!d.TryGetValue(sr.sprite.name, out o)) { Debug.LogWarning(sr.sprite.name + " cant found in json"); continue; } float pixelsPerUnit = o.width / sr.bounds.size.x; //Debug.Log(pixelsPerUnit); Vector2 leftTop = new Vector2(sr.bounds.min.x, sr.bounds.max.y); var go = sr.gameObject; go.transform.position += VectorUtils.V23(VectorUtils.V32(transform.position) - leftTop); var offset = new Vector2(o.x, -o.y) / (pixelsPerUnit); go.transform.position += VectorUtils.V23(offset); } }