【问题标题】:Sovled: Powershell - How to store arguments to a variable and use it?Sovled:Powershell - 如何将参数存储到变量并使用它?
【发布时间】:2018-09-05 11:16:06
【问题描述】:

我已经编写了一个用于批处理 atlas 包的 CMD 脚本,它运行良好。

CMD 脚本

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:: 错误:未知参数
--format unity-texture2d --smart-update --max-size 4096 --scale 0.5 - 请检查参数或访问http://www.codeandweb.com/texturepacker获取更新版本

【问题讨论】:

  • $AtlasOptions = '--format', 'unity-texture2d', '--smart-update', '--max-size', $AtlasMaxSize, '--scale', $AtlasScale
  • 非常感谢,它有效!

标签: powershell arguments texturepacker


【解决方案1】:

您需要将变量的值放在引号中,如下所示:

$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'"
}

如果您的值不是数字,则应始终这样做。

【讨论】:

    【解决方案2】:

    您需要扩展您的函数以具有可以传入的其他参数:

    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
    

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 2019-12-25
      • 2017-08-14
      • 2016-11-27
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多