官方 Scaleform 文档资料和教程 链接

官方 Scaleform 文档资料和教程
  • Scaleform UDK 文档资料 – 官方 Scaleform 4.0 UDK 文档资料。
  • 导入 SWF – 这个视频讨论的是创建 Flash 内容并将其导入到 UDK 中的一些重要规则。
  • 渲染贴图 & 材质 – 这个视频讨论的是中创建对于将交互 Flash 内容显示在 UDK 关卡中的 BSP 表面上所必需的渲染贴图和材质。
  • 将 SWF 添加到 BSP 对象 – 在这个视频中,我们谈到了将一个 Flash 文件添加到一个 BSP 表面上所需要进行的步骤,其中包括必需的 Kismet 工作流程。
  • 捕获输入 – 在这个视频中,我们说明了如何使用 GFx 捕获按键 kismet 节点将键盘和游戏控制器输入传输到 Flash 文件中。这样它会解释说明这个输入,然后使您可以旋转 3D 中的视频剪辑。
  • 使用 Invoke ActionScript & FSCommands – 在这个视频中,我们谈到了 Invoke ActionsCript 在 Kismet 中的使用,它允许您通过 UDK 调用 Flash 文件中的 ActionScript 函数。我们还将谈到通过 FS Commands 将一个命令从这个 Flash 文件中发送返回到 UDK。
  • 创建自定义菜单 – 在第六个 UDK 视频教程中,我们将会向您说明如何使用 Scaleform GFx 和 UnrealScript 创建一个自定义菜单系统的基础内容。
  • 使用 Scaleform 3Di Flash AS2 Extensions 创建 3D UI – 这个视频将会说明如何在 Scaleform GFx 3.2 及更高版本中使用我们的新 3Di ActionScript 2 插件平移和旋转 3D 空间中的视频剪辑。
  • 处理字体 – 在第七个 UDK 视频教程中,我们将会向您说明在 Flash 及 2010 年 9 月 UDK 版本中正确使用字体需要了解的所有内容。
  • 掌握 Scaleform HUD
    1. HUD 概述 – 这是由四部分组成的系列中的第一部分,它将会带您浏览 2010 年 9 月 UDK Scaleform HUD 中的所有文件和资源。
    2. UTGFxHudWrapper.uc – 这是说明 2010 年 9 月 UDK Scaleform HUD 是如何组成的第二个视频。在这个视频中,我们全面介绍了 UTGFxHudWrapper.uc 类的基础构成,同时我们花了一段时间详细说明了如何打开和关闭暂停菜单作为 HUD 的一部分。
    3. GFxMinimapHud.uc – 第 1 部分 – 这是说明 2010 年 9 月 UDK Scaleform HUD 是如何组成的第三个视频。在这个视频,我大致介绍了 GFxMinimapHud 类的前半部分内容以及 udk_hud Flash 文件。
    4. GFxMinimapHud.uc – 第 2 部分 – 这是说明 2010 年 9 月 UDK Scaleform HUD 是如何组成的第四个视频。在这个视频中,我对 GFxMinimapHud 类的后半部分内容进行了说明。
  • CLIK 入门指南
    1. 初始设置 – 在这个教程中,我们将会向您说明如何使用这个新的组件精简接口工具包或 CLIK 快速设计基础前端菜单系统,它将会包含一个主菜单和一个选项画面,全部由核心 CLIK 组件组成,例如按钮、滑块、选项步进以及单选按钮。
    2. 主菜单设置 – 在第二个步骤中,我们将会向主菜单中添加一些基本功能。
    3. 创建选项画面 – 在第三步骤中,我们会让主菜单上的按钮可以将用户带入到选项画面,我们也会添加一个与我们的第一个选项相同的难度设置选项步长。
    4. 复选框、单选按钮 & 滑块 – 在第四个步骤中,我们会添加一些新的组件,其中包括视频设置复选框、单选按钮以及音量滑块。
    5. 添加功能 – 在第五个步骤中,我们会添加 ok(确定)和 cancel(取消)按钮,同时会对难度设置选项步长和单选按钮添加一些功能。
    6. 保留更改 – 在第六个步骤中,我们会设置选项画面,这样它才会在按下 OK 按钮后保留用户所进行的任何更改。
    7. 添加背景 – 在这个教程中,我们会向您说明如何为那些组成我们在教程 1-6 中创建的菜单的组件更换皮肤。我们会将这个过程划分为八个步骤。在步骤中,我们会向这个菜单添加一个背景图片。
    8. 导入背景 – 在这个步骤中,我们会导入在 Adobe Photoshop 中创建的图片作为我们的选项画面的窗口使用。我们还会调整组件使它们与窗口相适应,然后复制一个组件,这样我们就有它的两个不同皮肤的版本了。
    9. 为主菜单按钮更换皮肤 – 在这个步骤中,我们将会为主菜单按钮更换皮肤。
    10. 为 OK 和 Cancel 按钮更换皮肤 – 在步骤 10 中,我们将会为 ok 和 cancel 按钮更换皮肤。
    11. 为声音滑块更换皮肤 – 步骤 11 将会涉及为声音滑块更换皮肤。
    12. 为复选框更换皮肤 – 我们将会在步骤 12 中为复选框更换皮肤。
    13. 为单选按钮更换皮肤 – 我们将会在这个步骤中为视频设置单选按钮更换皮肤。
    14. 为选项步长更换皮肤 – CLIK 入门指南中的最后一个步骤将会涉及未难度选项步长更换皮肤。
  • Scaleform 用户界面设计 – 在 MIGS 2011 举行的虚幻学院上 Matt Doyle 进行现场演示。

Read More

Event in C#

Just to add to the existing great answers here – building on the code in the accepted one, which uses a delegate void MyEventHandler(string foo)…

Because the compiler knows the delegate type of the SomethingHappened event, this:

myObj.SomethingHappened += HandleSomethingHappened;
Is totally equivalent to:

myObj.SomethingHappened += new MyEventHandler(HandleSomethingHappened);
And handlers can also be unregistered with -= like this:

// -= removes the handler from the event’s list of “listeners”:
myObj.SomethingHappened -= HandleSomethingHappened;
For completeness’ sake, raising the event can be done like this, only in the class that owns the event:

//Firing the event is done by simply providing the arguments to the event:
if (SomethingHappened != null) // the event is null if there are no listeners!
{
SomethingHappened(“Hi there!”);
}

Read More

Recheck the words and grammar that you previously checked and chose to ignore

Recheck the words and grammar that you previously checked and chose to ignore

In Word and Outlook, you can force a recheck of the words and grammar that you previously choose to ignore by doing the following:

Word

  1. Open the document that needs to be checked.
  2. Click the File tab.
  3. Under Help, click Options.
  4. Under Correcting spelling and grammar in Word, click Recheck Document.
  5. To recheck the spelling and grammar, click Yes when you see the following message: This operation resets the spelling checker and the grammar checker so that Word will recheck words and grammar you previously checked and chose to ignore. Do you want to continue?
  6. In the Word Options dialog box, click OK to get back to the document.
  7. On the Review tab, in the Proofing group, click Spelling & Grammar.

Read More

unity3d, Creating a new project and importing it to a Subversion repository.

Creating a new project and importing it to a Subversion repository.
例如:创建一个新的项目,并将他导入到Subversion版本库.

First, let’s assume that we have a subversion repository at svn://my.svn.server.com/ and want to create a project atsvn://my.svn.server.com/MyUnityProject. Then follow these steps to create the initial import in the system:

首先,假设我们在svn://my.svn.server.com/上有了一个subversion版本库。并希望创建一个在svn://my.svn.server.com/MyUnityProject的项目,然后按照以下步骤创建初始化导入系统中:

  1. Create a new project inside Unity and lets call it InitialUnityProject. You can add any initial assets here or add them later on.
    在Unity上创建一个叫做InitialUnityProject的新项目,你可以在这里添加任何初始资源或者稍后添加资源。
  2. Enable Meta files in Edit->Project Settings->Editor
    在Edit->Project Settings->Editor上启用Metal files。
  3. Quit Unity (We do this to assure that all the files are saved).
    退出Unity(我们这样做是为了确保所有文件都保存)。
  4. Delete the Library directory inside your project directory.
    删除项目目录中的Library目录。
  5. Import the project directory into Subversion. If you are using the command line client, this is done like this from the directory where your initial project is located:
    导入项目目录到Subversion,如果你使用命令行客户端,像这样从你最初项目所在的目录:
    svn import -m"Initial project import" InitialUnityProject svn://my.svn.server.com/MyUnityProject
    If successful, the project should now be imported into subversion and you can delete the InitialUnityProject directory if you wish.
    如果成功了,项目现在应该是导入到subversion,如果你想你可以删除InitialUnityProject目录。
  6. Check out the project back from subversion
    从subversion中检出项目
    svn co svn://my.svn.server.com/MyUnityProject
    And check that the Assets and ProjectSettings directory are versioned.
    检查Assets和ProjectSettings目录版本。
  7. Open the checked out project with Unity by launching it while holding down the Option or the left Alt key. Opening the project will recreate the Library directory in step 4 above.
    按住Option或左Alt键启动Unity打开检出的项目,打开项目时会重新创建第四步中提到的Library目录。
  8. Optional: Set up an ignore filter for the unversioned Library directory:
    可选项:设置忽略筛选器的没有版本化的Library目录:
    svn propedit svn:ignore MyUnityProject/
    Subversion will open a text editor. Add the Library directory.
    Subversion将会打开一个文本编辑器,添加Library目录。
  9. Finally commit the changes. The project should now be set up and ready:
    最后提交更改,该项目现在已建立并准备就绪了:
    svn ci -m"Finishing project import" MyUnityProject

Read More

给你5个写blog的理由

●  写你感兴趣的东西,不必在意你是否是专家
●  不要害怕失败
●  多多回复你的读者
●  就算你觉得没人会看你写的东西,也要坚持写下去
●  始终确保你的文章就代表着你的声音——这也是为什么写作是如此特别和吸引人的地方

Read More

Find back svn: Using External Version Control Systems with Unity

Using External Version Control Systems with Unity

Unity offers an Asset Server add-on product for easy integrated versioning of your projects. If you for some reason are not able use the Unity Asset Server, it is possible to store your project in any other version control system, such as Subversion, Perforce or Bazaar. This requires some initial manual setup of your project.

Before checking your project in, you have to tell Unity to modify the project structure slightly to make it compatible with storing assets in an external version control system. This is done by selecting Edit->Project Settings->Editor in the application menu and enabling External Version Control support by selecting Metafiles in the dropdown for Version Control. This will create a text file for every asset in the Assets directory containing the necessary bookkeeping information required by Unity. The files will have a.meta file extension with the first part being the full file name of the asset it is associated with. Moving and renaming assets within Unity should also update the relevant.meta files. However, if you move or rename assets from an external tool, make sure to syncronize the relevant .meta files as well.

When checking the project into a version control system, you should add the Assets and the ProjectSettings directories to the system. The Library directory should be completely ignored – when using external version control, it’s only a local cache of imported assets.

When creating new assets, make sure both the asset itself and the associated .meta file is added to version control.

Example: Creating a new project and importing it to a Subversion repository.

First, let’s assume that we have a subversion repository at svn://my.svn.server.com/ and want to create a project at svn://my.svn.server.com/MyUnityProject. Then follow these steps to create the initial import in the system:

  1. Create a new project inside Unity and call it InitialUnityProject. You can add any initial assets here or add them later on.
  2. Enable Meta files in Edit->Project Settings->Editor
  3. Quit Unity (this ensures that all the files are saved).
  4. Delete the Library directory inside your project directory.
  5. Import the project directory into Subversion. If you are using the command line client, this is done like this from the directory where your initial project is located:
    svn import -m"Initial project import" InitialUnityProject svn://my.svn.server.com/MyUnityProject
    If successful, the project should now be imported into subversion and you can delete the InitialUnityProject directory if you wish.
  6. Check out the project back from subversion
    svn co svn://my.svn.server.com/MyUnityProject
    And check that the Assets and ProjectSettings directory are versioned.
  7. Open the checked out project with Unity by launching it while holding down the Option or the left Alt key. Opening the project will recreate the Library directory in step 4 above.
  8. Optional: Set up an ignore filter for the unversioned Library directory:
    svn propedit svn:ignore MyUnityProject/
    Subversion will open a text editor. Add the Library directory.
  9. Finally commit the changes. The project should now be set up and ready:
    svn ci -m"Finishing project import" MyUnityProject

Page last updated: 2013-05-15

Read More

写代码的那些事3

1.  定义标志变量. 发现这个变量有歧义的时候,果断重新定义一个新的. 而不是把它从 bool 改成 int  名字不改,  否则会让你很困惑.

真想改成 Int 那就把名字也改了.   jumpState  好过   jump   . 原则就是减少歧义,保持纯洁性. 统一性. 减少修改后对有依赖的旧代码产生bug .

2. 结构设计其实是从需求开始的.  比如你不想写4-5行几乎一模一样的代码 来初始化一个 UI . 于是你把这些变成一个UI组件. 只是略微修改不一样的部分.

其实实际项目中,结构不是一下子就成了这个样子的, 是不断完善出来的. 原则就是:  提高代码复用, 但又要保持不被滥用. 函数只完成预定功能. 更复杂的部分, 要么是变成新函数,要么是先用琐碎代码实现功能.

过几天,有类似需求之后 再整理变成可复用代码(函数) .   做到最小单位 逻辑耦合.  如果想完成功能,还非要去查N个API组合起来才能实现, 这就是代码厚重的表现. 友方代码没有做好接口化.

变成组件好处就是可以提高代码的控制力. 用循环就可以实现修改, 用循环减少重复代码.  即便是差异非常大, 也没关系, 日后有类似扩张的时候, 你就体会到结构化的便利了.  一堆代码是没办法控制的. 变成class /ojbect  就可以能了.

3. 做UI就不用考虑知道原始的数据结构. 只是按数据把Ui刷新就好了.  数据解析原本应该就是额外的模块来处理.   而这个模块专心做数据处理.  没有的话, 就是需要写一个. 硬要把取数据 解析数据琐碎的事 也扔给UI程序实在是不合理.只有分工足够模块化, 才是最终代码结构化的保证.

4. 该异步的就得异步,  刷新时去取数据 会占用CPU 甚至阻塞主线程. 其实是可以异步的, 数据获取走一个, UI刷新走一个. 没有变更数据, UI不会重绘.  写什么样的代码还是得看能用什么样的方式来完成功能. 有时候你用线程是不行的, 就得异步.

epoll 啥的也没那么神秘.

5. bug这事要理性看待, 出bug是常态, 别上纲上线. 要分析出现的原因, 客观的评价一个人的工作质量.   在策划啥都没有的情况下, 写出来的代码只是原型化而已,  出什么状况都属正常.   要是没bug 那才是奇怪了呢.

等上线以后,你就哭去吧.

Read More

说出来我自己都不信,就有这么巧的事.

手机这么脆弱的连接人与人的一条线. 一旦没了信号, 真是有些慌乱

今天中午和老婆约好一起吃饭. 我还特意提前了10分钟下了楼,电梯不好坐.

然后, 没想到啊 没想到.

走着走着,我发现我手机突然就没有信号了. 等到了地铁站, 就更没信号了?  我挣扎了一下, 尝试到底下去找她. 但走了几步,我又转头回来了.我是怕她会到地铁口来找我. 而我又去找她,结果谁也找不到谁了. 信号依旧没有. 最可气的是, 走来走去的路人竟然还都可以打电话. 莫非他们都是联通的?

时间就这么一分一秒的过去了. 直到, 我的电话突然响了, 那边传来老婆的声音.. 显然心情也受到了影响.

手机这么脆弱的连接人与人的一条线. 一旦没了信号, 真是有些慌乱.  实际上,老婆还给我发过短信,问题是,我没了信号以后, 啥也没收到…

我其实是有考虑的, 怕老婆来找我. 走差了.  结果是,老婆以为短信我收到了, 在老地方等我.. 直到手机接通…

我跟她解释, 她都不信. 别说她不信,我自己都不信. 真是奇怪的一天.

Read More

2013/9/30老版停止.注意AdMob帐号需要升级.

AdMob 广告系列将会停止投放

这是来自官方的提示. 粗略查看文档后,发现需要迁移到adsense 帐号,  没有的要注册.

1/ 要地址验证. Google会邮寄明信片给我们.

2/ 要电话号码验证.

3/ 不能改国别. 如下地区的.

孟加拉
中国
印度
印度尼西亚
马来西亚
尼泊尔
巴基斯坦
菲律宾
新加坡
斯里兰卡
泰国
越南

最后更新时间:2013 年 8 月 20 日

最近我们发布了新版 AdMob,这是一个更为强大的应用推广广告系列投放平台。随着用户逐步升级至新系统,旧版 AdMob 将会停止提供服务。

重要日期

  • 2013 年 8 月 26 日:您将无法为广告系列补充资金。
  • 2013 年 9 月 30 日:旧版 AdMob 中的广告系列将停止投放广告。
  • 2013 年 10 月 15 日:您可以对旧版 AdMob 帐户中的余额申请退款的截止日期。

为了继续投放广告系列,请立即升级到新版 AdMob。升级时将会为您在新系统上创建一个新的 AdMob 帐户。升级过程可能需要几分钟时间,同时我们会自动导入您的广告系列。

有关更多详细信息,请参考升级指南有关升级的常见问题解答

Read More