PhotoShop中创建窗口使用对应按钮创建对应图层简单示例
以前在使用Photoshop的PSD文件转换成Unity的UI Prefab工具的时候,想过是否能在PhotoShop中创建“组件”方式创建层,然后通过代码给层做重命名,不需要手动改写层的名字,可以直接创建所需数量的图层并按照层级排列,具体思路如下:
本文是尝试实现的记录:
首先生成一个对话框,并生成按钮,点击按钮会生成图层:
代码:
// 创建一个新的对话框
var dialog = new Window('dialog', '自定义生成器');
// 创建Button按钮
var buttonButton = dialog.add('button', undefined, 'Button图层');
buttonButton.onClick = function () {
createButtonLayer();
};
// 创建Text按钮
var textButton = dialog.add('button', undefined, 'Text图层');
textButton.onClick = function () {
createTextLayer();
};
// 创建Image按钮
var imageButton = dialog.add('button', undefined, 'Image图层');
imageButton.onClick = function () {
createImageLayer();
};
// 创建列表按钮(这里假设是一个简单的按钮,点击后创建一个名为List的图层)
var listButton = dialog.add('button', undefined, 'List图层');
listButton.onClick = function () {
createListLayer();
};
// 创建Button图层的函数
function createButtonLayer() {
var doc = app.activeDocument;
var newLayer = doc.artLayers.add();
newLayer.name = 'Button图层';
// 设置Button图层的填充颜色为灰色
var fillColor = new SolidColor();
fillColor.rgb.red = 128;
fillColor.rgb.green = 128;
fillColor.rgb.blue = 128;
newLayer.fillColor = fillColor;
}
// 创建Text图层的函数
function createTextLayer() {
var doc = app.activeDocument;
var textLayer = doc.artLayers.add();
textLayer.name = 'Text图层';
// 将图层转换为文本图层
var textItem = textLayer.textItem;
textItem.contents = '默认文本内容';
textItem.size = 12;
textItem.color = new SolidColor();
textItem.color.rgb.red = 0;
textItem.color.rgb.green = 0;
textItem.color.rgb.blue = 0;
}
// 创建Image图层的函数
function createImageLayer() {
var doc = app.activeDocument;
var newLayer = doc.artLayers.add();
newLayer.name = 'Image图层';
// 这里假设你有一个名为image.jpg的图片资源在脚本同目录下
var imageFile = new File(File.desktop + '/image.jpg');
if (imageFile.exists) {
var placedLayer = doc.importFile(imageFile, new LayerPosition(AnchorPosition.MIDDLECENTER));
placedLayer.name = 'Image图层';
} else {
alert('指定的图片文件不存在。');
}
}
// 创建List图层的函数
function createListLayer() {
var doc = app.activeDocument;
var newLayer = doc.artLayers.add();
newLayer.name = 'List图层';
// 设置List图层的填充颜色为浅蓝色
var fillColor = new SolidColor();
fillColor.rgb.red = 173;
fillColor.rgb.green = 216;
fillColor.rgb.blue = 230;
newLayer.fillColor = fillColor;
}
// 显示对话框
dialog.show();
结果:
未完待续。。。