首先,如何改变文件夹名字呢?不想再叫Content了。
其实很简单,在 解决方案资源管理器 中点击*Content(Content),
然后再修改 属性 窗口中修改 内容根目录 的值。这样文件夹的名字就改掉了。
最后,别忘了这句话 Content.RootDirectory = "Content"; 改掉它的值就成功了。
那么RootDirectory是什么意思呢?
查看ContentManager的从元数据可以得到注释,意思是用于搜索内容的根目录。
也就是说
Content.Load<T>("Image/pic");
与
Content.RootDirectory = "Image"; Content.Load<T>("pic");
是等价的。
等等,这就是说我们可以创建多个文件夹,然后通过Content.RootDirectory在不同文件夹内切换。
没错,是这样的。
不过通常情况下我们是将素材放在同一个文件夹内的,如果你真的要用到多个文件夹那就要通过这个方法来切换了。
如何创建多个素材文件夹呢?
- 右键 解决方案'*'(n个项目)
- 添加空的内容项目
- 右键内容引用
- 添加内容引用
- 选择目标内容引用再点确定
可是这种方法切换文件夹还要设置Content.RootDirectory,可真的没有“Content2/*.*”这样方便啊……
那么,既然可以换文件夹,那么可不可以将素材放在游戏根目录下呢?
按照正常的思路,读取根目录的文件有这么几种写法:"*.*" "/*.*" "./*.*" "../*.*"。
我们一个一个来试试,首先我们把 内容根目录 的值清空,这时候VS将这个值改成".",编译下试试,结果xnb出现在根目录了!
实验证明素材是可以放在游戏根目录下。
这样我们还解决了多个文件夹切换麻烦的问题。
最后总结下,就像上面说的改文件夹名字那样:
在 解决方案资源管理器 中点击*Content(Content),然后将 属性 窗口中修改 内容根目录 的值修改为"."。
微软为什么要这么做?
由于素材放在一起是一个好习惯,估计因为这点微软就提前帮我们把这些事做好了。
不过微软没有想到一点,我们喜欢自由。即使我们会这么做,但是你强制我们这么做就感到浑身不舒服了。
其实微软也没强制,只是给了个默认值而已,不过Content.RootDirectory的确很废。