素材只能放在Content文件夹里吗?素材随意放全攻略。

首先,如何改变文件夹名字呢?不想再叫Content了。

 

其实很简单,在 解决方案资源管理器 中点击*Content(Content),

然后再修改 属性 窗口中修改 内容根目录 的值。这样文件夹的名字就改掉了。

最后,别忘了这句话 Content.RootDirectory = "Content"; 改掉它的值就成功了。

 

那么RootDirectory是什么意思呢?

查看ContentManager的从元数据可以得到注释,意思是用于搜索内容的根目录。

也就是说

Content.Load<T>("Image/pic");

 与

Content.RootDirectory = "Image";
Content.Load<T>("pic");

是等价的。

等等,这就是说我们可以创建多个文件夹,然后通过Content.RootDirectory在不同文件夹内切换。

没错,是这样的。

 

不过通常情况下我们是将素材放在同一个文件夹内的,如果你真的要用到多个文件夹那就要通过这个方法来切换了。

如何创建多个素材文件夹呢?

  1. 右键 解决方案'*'(n个项目)
  2. 添加空的内容项目
  3. 右键内容引用
  4. 添加内容引用
  5. 选择目标内容引用再点确定

可是这种方法切换文件夹还要设置Content.RootDirectory,可真的没有“Content2/*.*”这样方便啊……

 

那么,既然可以换文件夹,那么可不可以将素材放在游戏根目录下呢?

按照正常的思路,读取根目录的文件有这么几种写法:"*.*" "/*.*" "./*.*" "../*.*"。

我们一个一个来试试,首先我们把 内容根目录 的值清空,这时候VS将这个值改成".",编译下试试,结果xnb出现在根目录了!

实验证明素材是可以放在游戏根目录下。

这样我们还解决了多个文件夹切换麻烦的问题。

 

最后总结下,就像上面说的改文件夹名字那样:

在 解决方案资源管理器 中点击*Content(Content),然后将 属性 窗口中修改 内容根目录 的值修改为"."。

 

微软为什么要这么做?

由于素材放在一起是一个好习惯,估计因为这点微软就提前帮我们把这些事做好了。

不过微软没有想到一点,我们喜欢自由。即使我们会这么做,但是你强制我们这么做就感到浑身不舒服了。

其实微软也没强制,只是给了个默认值而已,不过Content.RootDirectory的确很废。

 

posted on 2013-02-10 18:58  snet  阅读(1005)  评论(0编辑  收藏  举报