Esempio n. 1
0
        //////////////////////////////////////////////////////////////////////

        private void Init(BitmapFont font, char c)
        {
            character = c;
            this.font = font;
            BitmapFont.GlyphRenderer g = font.GetGlyphDetails(c);
            if(g != null)
            {
                float nearZ = Camera.main.nearClipPlane;
                var zero = Camera.main.ScreenToWorldPoint(new Vector3(0, 0, nearZ));
                var one = Camera.main.ScreenToWorldPoint(new Vector3(1, 1, nearZ));  // work out how big a pixel is...
                var pixel = one - zero;
                name = c.ToString();
                advance = g.advance;
                int imageCount = g.imageCount;
                if (imageCount > 0)
                {
                    letter = new GameObject[imageCount];
                    for (int i = 0; i < imageCount; ++i)
                    {
                        GameObject go = new GameObject("Layer:" + i.ToString());
                        SpriteRenderer sr = go.AddComponent<SpriteRenderer>();
                        Sprite sprite = g.images[i];
                        if (sprite) //huh?
                        {
                            sr.sprite = sprite;
                            sr.material = Glyph.Material;
                            go.transform.localPosition = new Vector3((-0.25f + g.offsets[i].x) * pixel.x, (0.25f + font.data.Height - g.offsets[i].y) * pixel.y, nearZ);
                            sr.sortingOrder = i;
                            go.transform.SetParent(transform);
                            letter[i] = go;
                        }
                    }
                }
            }
        }