Sovled: Powershell - Как сохранить аргументы переменной и использовать ее? - PullRequest
0 голосов
/ 05 сентября 2018

Я написал сценарий CMD для пакетирования пакетов атласа, и он отлично работает.

CMD Script

set OutputDir=%1
set MaxSize=%2
set Scale=%3

set TpCmd=--format unity-texture2d --smart-update --max-size %MaxSize% --scale %Scale%
TexturePacker %TpCmd% --data "%OutputDir%.tpsheet" --sheet "%OutputDir%.png" "D:\xxx"

.
.
Недавно я изучаю PowerShell и пытаюсь написать скрипт, который мог бы работать, как описано выше.

Скрипт PowerShell

$AtlasMaxSize = 4096
$AtlasScale = 0.5

function Pack-Atlas($FileName) {
    $AtlasOptions = --format unity-texture2d --smart-update --max-size $AtlasMaxSize --scale $AtlasScale
    TexturePacker $AtlasOptions --data "$FileName.tpsheet" --sheet "$FileName.png" "D:\xxx"
}

.
.
Но, похоже, неправильный способ объявления переменной $ AtlasOptions.
Я думаю, может быть, нужен какой-то способ хранения опций, кто-то может мне помочь или предоставить несколько ключевых слов? .
.
.
.
,

Обновление

Спасибо за @gvee и @ TobyU
Я отредактировал скрипт. ,

function Pack-Atlas($FileName, $AtlasMaxSize, $AtlasScale) {
    $AtlasOptions = "--format unity-texture2d --smart-update --max-size $AtlasMaxSize --scale $AtlasScale"
    TexturePacker $AtlasOptions --data "$FileName.tpsheet" --sheet "$FileName.png" $TargetPath
}

Но, похоже, не работает. Вот сообщение об ошибке, которое я получил:

TexturePacker :: error: неизвестный аргумент
--format unity-texture2d --smart-update --max-size 4096 --scale 0.5 - пожалуйста, проверьте параметры или посетите http://www.codeandweb.com/texturepacker для более новой версии

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вам нужно расширить свои функции, чтобы иметь другие параметры, которые вы можете передать:

function Pack-Atlas ($FileName, $AtlasMaxSize, $AtlasScale) {
    $AtlasOptions = "--format unity-texture2d --smart-update --max-size $AtlasMaxSize --scale $AtlasScale"
    TexturePacker $AtlasOptions --data "$FileName.tpsheet" --sheet "$FileName.png" "D:\xxx"
}

Затем вы можете передать дополнительные аргументы:

Pack-Atlas -FileName "/temp/foo.bar" -AtlasMaxSize 4096 -AtlasScale 0.5
0 голосов
/ 05 сентября 2018

Вам нужно поместить значение вашей переменной в кавычки, как показано ниже, чтобы объявить ее правильно:

$AtlasMaxSize = 4096
$AtlasScale = 0.5

function Pack-Atlas($FileName) {
    $AtlasOptions = "--format unity-texture2d --smart-update --max-size $global:AtlasMaxSize --scale $global:AtlasScale"
    TexturePacker "$AtlasOptions --data '$($FileName).tpsheet' --sheet '$($FileName).png' 'D:\xxx'"
}

Это всегда следует делать так, если ваше значение не является числом.

...