LudoArt Blog

The programmer of tomorrow is the magician of the future.

Unity Editor Scripting

1.构建一个自定义的Inspector using UnityEngine; using System.Collocetions; public class LevelScript : MonoBehaviour { public int experience; public int Level{ get { return experience ...

【游戏制作知识杂烩】

关于战旗游戏中的六边形网格

【游戏制作知识杂烩】关于战旗游戏中的六边形网格 六边形网格有多种不同的存储形式,各有特点,对比结果见下表:   Offset Doubled Axial Cube Pointy rotation evenr, oddr doublewidth ...

【游戏编程模式】原型模式

原型模式

【游戏编程模式】原型模式 原型设计模式 假设我们要用《圣铠传说》的风格做款游戏。 野兽和恶魔围绕着英雄,争着要吃他的血肉。 这些可怖的同行者通过“生产者”进入这片区域,每种敌人有不同的生产者。 在这个例子中,假设我们游戏中每种怪物都有不同的类——Ghost,Demon,Sorcerer等等,像这样: class Monster { // 代码…… }; class Ghost ...

【游戏编程模式】单例模式

单例模式

【游戏编程模式】单例模式 单例模式 设计模式像这样描述单例模式: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点。 保证一个类只有一个实例 有时候,如果类存在多个实例就不能正确的运行。 通常发生在类与保存全局状态的外部系统互动时。 考虑封装文件系统的API类。 因为文件操作需要一段时间完成,所以类使用异步操作。 这就意味着可以同时运行多个操作,必须让它们相互协调...

【游戏编程模式】观察者模式

观察者模式

【游戏编程模式】观察者模式 观察者应用广泛,如MVC架构。 Java将其放到了核心库中(java.util.Observer),而C#直接将其嵌入了语法(event关键字) 案例:成就解锁 假设我们向游戏中添加了成就系统。 它存储了玩家可以完成的各种各样的成就,比如“杀死1000只猴子恶魔”,“从桥上掉下去”,或者“一命通关”。 要实现这样一个包含各种行为来解锁成就的系...

【游戏编程模式】享元模式

享元模式

【游戏编程模式】享元模式 案例一:森林 每棵树都有一系列与之相关的位: 定义树干,树枝和树叶形状的多边形网格。 树皮和树叶的纹理。 在森林中树的位置和朝向。 大小和色彩之类的调节参数,让每棵树都看起来与众不同。 如果用代码表示,那么会得到这样的东西: class Tree { private: Mesh mesh_; Texture bark_; T...

【游戏编程模式】命令模式

命令模式

【游戏编程模式】命令模式 命令是具现化的方法调用。 命令模式是一种回调的面向对象实现。 案例 在每个游戏中都有一块代码读取用户的输入——按钮按下,键盘敲击,鼠标点击,诸如此类。 这块代码会获取用户的输入,然后将其变为游戏中有意义的行为。 下面是一种简单的实现: void InputHandler: handleInput() { if (isPressed...

Unity中级编程

Unity中级编程 创建属性 从类的外部去访问这个类的成员变量,有两种方法:第一种是通过定义公共变量,第二种是通过使用属性的办法(更佳) 使用属性的办法可以完成公共变量无法实现的操作: 通过省略get或set将字段变为只写或只读 可以将访问器视为函数,这表示你可以在访问器内部执行其他操作 using UnityEngine; using System.Collectio...

【C++2.0新特性】默认的方法和禁用的方法

默认的方法和禁用的方法 假定要使用某个默认的函数,而这个函数由于某种原因不会自动创建。 例如,提供了移动构造函数,因此编译器不会自动创建默认的构造函数、复制构造函数和复制赋值构造函数。 在这些情况下,可以使用关键字default显式地声明这些方法的默认版本: class Someclass { public: Someclass(Someclass &&...

【C++2.0新特性】initializer_list

initializer_list 模板initializer_list 可以使用初始化列表语法将STL容器初始化为一系列值: std::vector<double> payments {45.99, 39.23, 19.95, 89.01}; 这将创建一个包含4个元素的容器,并使用列表中的4个值来初始化这些元素。 这之所以可行,是因为容器类现在包含将 initiali...