【教程】自定义广告&地皮decal教程
都市天际线吧
全部回复
仅看楼主
level 11
amam🍦ya 楼主
广告牌和地皮这种东西,模型简单,贴图简单,但是也需要很多自定义的种类,所以希望大家能一起产出多种多样的广告牌。
贴图处理以ps为例,建模工具以3dsmax为例,其他工具应该也可以
2019年02月18日 05点02分 1
level 11
amam🍦ya 楼主
首先把你要做的广告牌弄个图片或者拍个照片,作为贴图素材
然后,ps中新建,大小选择与你要做的比例类似的,但必须是2的N次方的像素,例如我选择512*256像素
将图片丢进去,自由变换(Ctrl+T)调整大小,右键选择变形斜切透视都可以,把你要的部分调满整个图片
这就是贴图了,导出到C:\Users\______\AppData\Local\Colossal Order\Cities_Skylines\Addons\Import
命名为 XXX_d.png
2019年02月18日 05点02分 2
教程好东西,
2019年02月26日 06点02分
level 11
amam🍦ya 楼主
创建模型
工具栏第一个,创建物品,选择长方体,随便拉一个长方体
工具栏第二列,修改。调整大小,单位是通用单位(单位不对的在 自定义--单位设置 中修改),100通用单位=天际线1米
勾选生成贴图左边,取消真实贴图大小,默认的贴图就是整个贴图占满每个面
导出模型,命名为刚才贴图的前缀XXX
2019年02月18日 05点02分 3
求第二张图最详细的教程,谢谢。
2019年03月25日 11点03分
@Sky航海王😺 就右边那个面板,勾选自动生成贴图左边就会把整个贴图拉伸到每个面上
2019年03月25日 12点03分
@amam🍦ya 您好,我想问一下这里导出的话还是原来的文件夹吗?Cities_Skylines\Addons\Import这里?
2020年07月01日 16点07分
@尹伯夕 是的
2020年07月03日 08点07分
level 11
amam🍦ya 楼主
导入游戏。
打开资产编辑器,选择prop,选择套用。图中的目录东西特别多,手动翻会很累,可以考虑套用别的目录的东西。
注意不要套用地皮之类的有代码的东西,会出问题
点继续,会让你选择模型,就选刚才导出的模型
方向不对的调整一下,我都是x轴转3次就刚好
点继续,已然完成了,广告牌就这么简单
2019年02月18日 05点02分 5
怎么贴图是白的?
2019年03月25日 12点03分
level 11
amam🍦ya 楼主
接下来地皮decal
需要一个mod叫modtools,用来输入代码
贴图还是那样,你要什么样的地皮就什么样的贴图,但是得用方形的
模型有点变化,我们只做立方体,
要注意轴的位置要居中
工具栏第三栏,仅调整轴,居中到对象
同样的生成贴图坐标就行
2019年02月18日 05点02分 6
level 11
amam🍦ya 楼主
对了补充一下,地皮的贴图可以用_a贴图表现透明度。
然后导入游戏
记得开启modtool
同样的套用prop
选择模型
然后要输入代码,先注意一下几个参数,
var size = new Vector4(8,4,8,0),
两个8是生成地皮的大小,也就是说地皮本身的大小和你做模型的大小无关的。中间的4是游戏中上下高度的接受范围,地皮会显示在别的一些模型上面,但是如果模型和地皮的高度差超过这个范围会不显示或部分
var tiling = new Vector4(1,0,1,0);
这是平铺参数,表示整个地皮在范围内重复多少次
一般不会需要改
在最后 asset.m_UIPriority = 180; 这是一个优先级,会决定地皮在列表中的位置
设置好了之后,F7是modtool的代码窗开关,输入小框框里面
点击run就完事了
下面是完整代码,主要就注意第一个参数就行了
// this line defines the size of the prop. The mesh must have the same dimensions
var size = new Vector4(8,4,8,0);
// this defines the tiling factor in x and z direction
var tiling = new Vector4(1,0,1,0);
// do not change this section!
var asset = ToolsModifierControl.toolController.m_editPrefabInfo as PropInfo;
if(asset == null)
{
Debug.Log("Error: Not a prop!"); return;
}
var shader = Shader.Find("Custom/Props/Decal/Blend");
if(asset.m_material != null)
{
asset.m_material.SetOverrideTag("RenderType", "Decal");
asset.m_material.shader = shader;
asset.m_material.SetVector("_DecalSize", size);
asset.m_material.SetVector("_DecalTiling", tiling);
Debug.Log("Decal Shader applied!");
var marker = new Color(12f / 255, 34f / 255, 56f / 255, 1f);
var data1 = new Color(size.x / 255, size.y / 255, size.z / 255, 1f);
var data2 = new Color(tiling.x / 255, tiling.y / 255, tiling.z / 255, 1f);
asset.m_material.SetColor("_ColorV0", marker);
asset.m_material.SetColor("_ColorV1", data1);
asset.m_material.SetColor("_ColorV2", data2);
asset.m_material.SetColor("_ColorV3", Color.white);
Debug.Log("Decal Prop Fix mod data saved in asset!");
}
else
{
Debug.Log("Error: Decal has no texture!"); return;
}
if(asset.m_lodMaterial != null)
{
asset.m_lodMaterial.SetOverrideTag("RenderType", "Decal");
asset.m_lodMaterial.shader = shader;
asset.m_lodMaterial.SetVector("_DecalSize", size);
asset.m_lodMaterial.SetVector("_DecalTiling", tiling);
}
typeof(PropInfo).GetField("m_UIEditorCategory", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(asset, "PropsResidentialGroundTiles");
asset.m_createRuining = false;
asset.m_useColorVariations = false;
asset.m_requireHeightMap = true;
// change this value. It changes the order of props in the menu
asset.m_UIPriority = 180;
Debug.Log("Done!");
2019年02月18日 05点02分 7
level 1
6666
2019年02月18日 05点02分 8
level 1
学习一下[你懂的]
2019年02月18日 05点02分 9
level 11
amam🍦ya 楼主
广告牌还可以做动态的,需要animUV的mod支持,具体做法之前的教程讲过了
2019年02月18日 06点02分 10
教程在哪 有链接吗
2021年07月06日 15点07分
level 12
Marked[真棒]
2019年02月18日 19点02分 11
level 12
顶顶
2019年02月19日 07点02分 12
level 9
大佬,[真棒]
2019年02月19日 11点02分 13
level 7
师傅我来晚了,墙裂支持[太开心]
2019年02月20日 17点02分 15
level 11

2019年02月22日 10点02分 16
level 11
amam🍦ya 楼主
@风晓得Ome 申精
2019年02月23日 11点02分 17
1 2 3 尾页