Unity
如果你用 Unity 制作过游戏,要开始使用 All Out,你需要了解一些关键差异!
最后更新于
// main.csl
import "core:ao"
import "ui" // 可选:将 /scripts/ui 下的所有文件纳入作用域// orbiter.csl
Orbiter :: class : Component {
center: v2;
radius: float;
speed: float;
angle: float;
ao_start :: method() {
center = entity.local_position;
radius = 2.0;
speed = 1.0;
angle = 0.0;
}
ao_update :: method(dt: float) {
angle += speed * dt;
offset := v2{cos(angle) * radius, sin(angle) * radius};
entity.set_local_position(center + offset);
}
}spawn_enemy :: proc() {
prefab := get_asset(Prefab_Asset, "Enemies/BasicEnemy.prefab");
e := Scene.instantiate(prefab, {10, 5});
}Damage_On_Touch :: class : Component {
damage: int = 10 @ao_serialize;
}// 创建和销毁实体
e := Scene.create_entity();
e.set_local_position({0, 0});
e.destroy();
// 遍历实体(仅在你真正需要“全部内容”时)
for e2: entity_iterator() {
}
// 遍历某一特定类型的组件
for player: component_iterator(Player) {
}nearby: [..]Pickup;
Scene.get_all_components_in_range(entity.local_position, 2.0, ref nearby);
for p: nearby {
// 检查距离 / 应用效果 / 等等
}