public void SetupFragments(LevelConfig levelConfig) { rows = levelConfig.rows; columns = levelConfig.columns; source = EntryPoint.instance.loadAsset <Sprite>("sprites", levelConfig.id + ".jpg") as Sprite; Texture2D texture = source.texture; fragments = new Fragment[rows * columns]; // 切成 1 : heightUnit 的矩形 pixelsPerUnitX = (float)texture.width / (float)columns; pixelsPerUnitY = (float)texture.height / (float)rows; float height = pixelsPerUnitY / pixelsPerUnitX; for (int i = 0; i < fragments.Length; i++) { float x = Random.Range(minX, maxX); float y = Random.Range(minY, maxY); FragmentGroup group = new FragmentGroup(this); GameObject instance = Object.Instantiate(fragmentPrefab, new Vector3(x, y, 0f), Quaternion.identity, fragmentsRoot) as GameObject; Fragment fragment = instance.GetComponent <Fragment> (); if (fragment == null) { fragment = instance.AddComponent <Fragment>(); } group.AddMember(fragment); fragment.index = i; fragment.row = i / columns; fragment.column = i % columns; fragment.group = group; Rect rect = new Rect(fragment.column * pixelsPerUnitX, (rows - fragment.row - 1) * pixelsPerUnitY, pixelsPerUnitX, pixelsPerUnitY); fragment.spriteRenderer.sprite = Sprite.Create(texture, rect, new Vector2(0.5f, 0.5f), pixelsPerUnitX); fragment.GetComponent <BoxCollider2D>().size = new Vector3(1.0f, height, 1.0f); fragment.fragmentManager = this; fragments [i] = fragment; group.SetSortingOrder(i); groups.Add(group); } CompressSortingOrderRange(); }
void OnMouseDown() { group.SetSortingOrder(fragmentManager.MaxSortingOrder + 1); fragmentManager.CompressSortingOrderRange(); }