所以我想知道是否有办法将精灵“重新打包”成为一个主题。我得到了一张包含我需要的所有舞台精灵的图像,我基本上想知道我是否可以将它们保留在那一张图像中,然后将“链接”或其他东西放在一个单独的包中。我想过做一个“主题”类,然后创建它的实例来匹配我的主题,并使用硬编码的变量来匹配。但我不敢相信没有更好的方法。我希望我已经解释得足够好了^^
问问题
257 次
1 回答
0
对于那些感兴趣的人,我最终这样做了,而且它似乎有效。虽然它确实让我不得不在代码中编写纹理,但我一直在寻找一种在编辑器/文件夹结构中完成它的方法。
ThemePack t = new ThemePack(Room.Theme.Medbay);
t.walls.Add(sprites[6]);
t.floors.Add(sprites[32]);
t.floors.Add(sprites[66]);
t.floors.Add(sprites[67]);
t.floors.Add(sprites[68]);
t.floors.Add(sprites[69]);
using UnityEngine;
using System.Collections;
public class SpriteCollection {
private Sprite[] sprites;
private string[] names;
public Sprite this[int i] {
get {
return sprites[i];
}
}
public SpriteCollection(string spritesheet) {
sprites = Resources.LoadAll<Sprite>(spritesheet);
names = new string[sprites.Length];
for(int i = 0; i < names.Length; i++) {
names[i] = sprites[i].name;
}
}
public Sprite GetSprite(string name) {
return sprites[System.Array.IndexOf(names, name)];
}
}
using UnityEngine;
using System.Collections.Generic;
using Level;
public class ThemePack {
public List<Sprite> walls;
public List<Sprite> floors;
public Room.Theme name {get; set;} //Could use a string instead, but this is an enum already existing.
private ThemePack() {
}
public ThemePack(Room.Theme n, List<Sprite> w, List<Sprite> f) {
name = n;
walls = w;
floors = f;
}
public ThemePack (Room.Theme n) : this(n, new List<Sprite>(), new List<Sprite>()) {
}
public Sprite GetRandomWall() {
return walls[Random.Range(0, walls.Count - 1)];
}
public Sprite GetRandomFloor() {
return floors[Random.Range(0, floors.Count - 1)];
}
}
于 2014-12-04T20:39:26.293 回答