Content Factory 是一款辅助 MonoGame 游戏开发的工具。它提供素材管理的多项功能,包括编译素材、编辑自定义数据等,并能同时应用多个游戏平台。

项目设置

选择要创建游戏项目的平台,勾选“生成”,然后设置“项目目录”(必须),有两种方法设置:

1、直接生成素材到最终的游戏目录,这里可以设置游戏程序所在目录。这种方法适用Windows等PC平台。

2、生成素材到游戏项目目录,这和MonoGame默认的方式相同,需设置游戏项目来配合使用。这种方法适用所有平台,而Android等移动平台必须用这种方法:

a)假设新建游戏项目TestGame,设置“项目目录”为游戏项目文件所在目录,即TestGame.csproj所在的目录。

b)设置“游戏项目”为游戏项目文件,即TestGame.csproj。

c)在TestGame项目中删除Content文件夹,所有素材管理都由本软件来完成。

d)在添加、删除素材,或更改素材或目录名称时,通过菜单“编辑-更新游戏项目”(或工具栏上相应按钮)来更新TestGame项目(需要先设置工具栏上的组合框,选择要操作的游戏平台)。如果正在使用Visual Studio编辑TestGame项目,会弹出“检测到文件修改”对话框,点击“重新加载”即可同步素材项目(做这个软件的时候是根据Windows平台的项目来设计的,现在发现每个平台的项目文件的结构不一样,方法二暂时不可用,用方法一然后在项目中手动更新素材):

素材管理

素材管理的功能都在菜单“编辑”下,包括编辑创建、导入、替换、删除和生成功能,以及文件夹创建和删除功能。

1、导入素材可以选择多个本地文件,对于不支持(找不到合适的导入程序)的文件类型会自动忽略。导入素材需先选择一个目录或素材,如果选择目录,导入的素材都将添加到该目录下;如果选择素材,导入的素材将添加到该素材同目录下。

2、替换素材可以重新选择本地文件,保留素材的设置(名称、压缩和导入、处理程序),要求替换的文件是同类素材,比如都是图像文件。

3、新建根目录,是指创建一个和Content目录同级的目录,这里Content目录是新建项目后默认创建的根级目录,这是为了和Xna或MonoGame统一。

4、生成素材功能,需要先选择要操作的游戏平台(工具栏上的组合框来设置),并选择一个目录或素材,如果选择目录,将对目录下所有素材都执行生成操作,如果勾选工具栏上的“生成素材时包括子级素材”,将遍历所有子级目录。默认情况下标记“已生成”的素材是不会执行生成操作,如果因为特殊原因(比如生成的.xnb文件在资源管理器中被勿删除)需要生成,可以勾选工具栏上的“强制重新生成素材”。

5、任何本软件管理的素材,都会监视其文件是否被修改,如果被其它软件编辑,本软件会将其标记为“未生成”。同时还可以通过双击素材(或通过菜单“编辑-编辑”)来打开系统默认的编辑器进行编辑。

自定义数据

Xna/MonoGame提供自定义类型的序列化,通过Xml文件来实现。假设定义一个英雄类,结构如下

 namespace TestGame
{
[Serializable]
public class HeroData
{
public string Name { get; set; }
public int Health { get; set; }
public float Speed { get; set; }
public float Power { get; set; }
public float Magic { get; set; }
public List<WeaponData> Weapons { get; set; }
public List<SpriteData> Sprites { get; set; }
} public class WeaponData
{
public string Name { get; set; }
public float Attack { get; set; }
public float Defense { get; set; }
} public class SpriteData
{
public string Name { get; set; }
public float Speed { get; set; }
public float Magic { get; set; }
}
}

注意:

1、需要在本软件中编辑的类,必须添加“Serializable”特性。

2、不要使用数组类型属性,本软件的编辑器在编辑数组属性时会出错,可以使用List类型来替代。

3、属性应使用基础类型,如:int、float、string以及枚举等,不要用class属性,因为本软件无法编辑类,建议改成List,然后只添加一项。

编写好后,重新生成TestGame项目,把生成的程序拷贝到本软件的程序目录,然后重启软件(软件启动时会自动搜索程序目录里所有的程序集)。通过菜单“编辑-创建自定义数据”(或工具栏相应按钮)来创建该类型数据:

创建数据后,会要先保存到本地,并将该素材添加到当前选定的目录。接下来会弹出数据编辑对话框(双击.xml类型的素材都会使用该编辑器进行编辑,而不是系统默认的Xml编辑器):

大部分操作和Visual Studio里的属性视图类似。编辑完成后,通过菜单“文件-保存”,可以生成后断点看一下:

扩展素材管道

将程序集放到软件目录,软件会自动查找导入、处理程序(还有上文提到的自定义类型)。

已经准备开源到Codeplex:https://contentfactory.codeplex.com/

Content Factory:辅助 MonoGame 游戏开发的更多相关文章

  1. 博主有偿带徒 《编程语言设计和实现》《MUD游戏开发》《软件破解和加密》《游戏辅助外挂》《JAVA开发》

    <考研专题>操作系统原理 理论解答:8K 实战 1.5W CPU设计 理论解答:1W 实战 2.5W <编程语言设计和实现>初窥门径<5K>:编译原理.编译设计小试 ...

  2. OUYA游戏开发核心技术剖析大学霸内部资料

    OUYA游戏开发核心技术剖析大学霸内部资料 试读地址:http://pan.baidu.com/s/1ntuql8t 介绍:本教程是一本进阶级的教材,它可以让读者在了解.熟悉了OUYA设备的基础上,开 ...

  3. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  4. [Canvas前端游戏开发]——FlappyBird详解

    一直想自己做点小东西,直到最近看了本<HTML5游戏开发>,才了解游戏开发中的一点点入门知识. 本篇就针对学习的几个样例,自己动手实践,做了个FlappyBird,源码共享在度盘 :也可以 ...

  5. Egret白鹭H5小游戏开发入门(一)

    前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJS,玩得了Egret,又学过PIXI.js. ...

  6. HTML5游戏开发引擎,初识CreateJS

    CreateJS为CreateJS库,可以说是一款为HTML5游戏开发的引擎.打造 HTML5 游戏,构建新游戏,提供构建最新 HTML5 的技术.你可以通过这个网站学习如何构建跨平台和跨终端游戏.这 ...

  7. Html5 Egret游戏开发 成语大挑战(八)一般性二级页面处理

    在游戏中,我们一般会有各种各样的二级页面,比如游戏暂停界面或者游戏结束界面,这些界面组成了对玩家交互主要手段,在游戏开发中,对于这些界面的coding组织是非常有学问的,如果倒退到十年前,游戏开发的老 ...

  8. Html5 Egret游戏开发 成语大挑战(一)开篇

    最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力 ...

  9. OpenNI结合Unity3D Kinect进行体感游戏开发(转)

    OpenNI结合Unity3D Kinect进行体感游戏开发(转) 楼主# 更多 发布于:2012-07-17 16:42     1. 下载安装Unity3D(目前版本为3.4)2. 下载OpenN ...

随机推荐

  1. eclipse一直卡住,出现 “android sdk content loader 0%” 卡住的错误分析及解决方法

    分析:这种问题之前没有遇到过,也不知道什么原因,直接去网上查询,打开www.stackoverflow.com,输入要查询问题的关键词,我们输入 “android sdk content loader ...

  2. [stl] SGI STL的空间配置器

    第一级空间配置器 第一级配置以malloc(), free(), realloc()等c函数执行实际的内存配置,释放.重配置操作,并实现出类似c++ new handler的机制.它不能直接使用c++ ...

  3. CSS 相邻选择器(七)

    一.相邻选择器 相邻选择器前后部分之间用一个加号(+)隔开,前后两部分选择反符在结构上属于同级关系,如 相邻选择器,是根据左侧选择符指定相邻元素,然后在该相邻元素后面寻找匹配匹配右侧选择符的相信元素 ...

  4. 【原】log4cplus使用说明

    网上关于开源日志工具log4cplus的说明有很多,但大多略显复杂,本文主要从实用的角度,介绍一种最简单而且又实用的方法.本文的方法已经足够满足实际工程中的使用需求,而且不需要很复杂的流程,可以实现. ...

  5. 蓝牙Ibeacon室内定位和微信摇一摇周边原理分析

    苹果推出Ibeacon室内定位技术是为了弥补GPS无法覆盖室内定位这种场景.苹果意味着创新,在其推动下,蓝牙Ibeacon得到了极大的应用.而腾讯则是利用蓝牙Ibeacon在场景体验方面进行了创新,实 ...

  6. Android源码分析之MessageQueue

    下面让我们花些时间来看看MessageQueue的具体实现,不过在分析代码之前让我们来理解下在类开头的一大段comments. MessageQueue是比较低层的类,是持有Message(在Loop ...

  7. GCD中的dispatch_apply的用法及作用

    GCD中的dispatch_apply的用法及作用 (一)dispatch_apply的基本用法 dispatch_apply函数是dispatch_sync函数和Dispatch Group的关联A ...

  8. Retrofit源码设计模式解析(上)

    Retrofit通过注解的方法标记HTTP请求参数,支持常用HTTP方法,统一返回值解析,支持异步/同步的请求方式,将HTTP请求对象化,参数化.真正执行网络访问的是Okhttp,Okhttp支持HT ...

  9. 朝花夕拾-android 获取当前手机的内存卡状态和网络连接状态

    序言: 人的一生是一个选择的过程. 如果脚下只有一条路,只要一往无前即可,不用担心走错.即使是错也别无它法.然而人是不安分的,况且安于独木桥的行走,其目的地由于没有蜿蜒曲折去遮挡行路人的视线,一往无前 ...

  10. Effective Java 48 Avoid float and double if exact answers are required

    Reason The float and double types are particularly ill-suited for monetary calculations because it i ...