饥荒Mod 开发(十四):制作屏幕弹窗
本篇源码
饥荒中按下Tab键可以显示地图,刚开始进入游戏的时候地图是未探索状态,所以我们并不知道地图上面的物品分布情况。并且地图上只会显示很少一部分的物品,比如树枝,草,浆果这些会显示,但是牛,胡萝卜,蜘蛛等等都是不会显示的。
显示全图
可以在modmain.lua 文件中增加下面代码,进入游戏之后就可以直接显示全图了
-- 定义一个函数,用于显示完整的地图
local function ShowFullMap(inst)-- 在0.001秒后执行以下操作inst:DoTaskInTime( 0.001, function() -- 查找带有"minimap"标签的第一个实体,并将其赋值给minimapminimap = TheSim:FindFirstEntityWithTag("minimap")-- 在minimap上调用MiniMap:ShowArea方法,显示一个大范围的区域minimap.MiniMap:ShowArea(0,0,0,40000)end)
end-- 在模拟器后初始化时添加一个函数
-- 这个函数会在世界构造完成后被调用
AddSimPostInit(function(inst)-- 调用ShowFullMap函数,显示完整的地图ShowFullMap(inst)
end)
显示牛的位置
2.1 准备贴图图片
默认的时候打开大地图并不会显示牛的位置,为了能显示牛我们需要一张png的贴图, 64*64像素, 32 bit。将图片放到
images/inventoryimages 目录下
2.2 编译生成贴图
工具的使用可以参考 饥荒Mod 开发(三):资源工具使用, 我们先cd 到工具目录下,然后执行一下脚本
PS D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpet> & 'h:\Don''t Starve Mod Tools\ds_mod_tools\build\win32\mod_tools\autocompiler.exe' "D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpetfood"Atlasing D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpetfood\images\inventoryimages\beefalo.png npot: False
Atlasing[################################] 1/1
dest_filename D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpetfood\images\inventoryimages\beefalo.tex ROOT:D:\WeGameApps\rail_apps\饥荒:单机版(2000013)
D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpetfood\images\inventoryimages\lightsword.xml is up to date.
D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpetfood\images\inventoryimages\pigpetfood.xml is up to date.
D:\WeGameApps\rail_apps\饥荒:单机版(2000013)\mods\pigpetfood\anim\lightsword.zip is up to date.
脚本执行完之后,会打包 贴图文件
2.3 显示 牛 的位置
拦截 牛的创建过程,设置牛的位置
-- 定义资源,包括图片和图集
Assets =
{Asset( "IMAGE", "images/inventoryimages/beefalo.tex" ), -- 加载图片资源Asset( "ATLAS", "images/inventoryimages/beefalo.xml" ), -- 加载图集资源
}-- 添加小地图图集
AddMinimapAtlas("images/inventoryimages/beefalo.xml")-- 对"beefalo"预制物体进行后初始化
AddPrefabPostInit("beefalo", function(inst)-- 添加小地图实体local minimap = inst.entity:AddMiniMapEntity()-- 设置小地图图标minimap:SetIcon( "beefalo.tex" )
end)
地图上可以用相同的方法显示任何的 物品,代码很简单。