param( [Parameter(Mandatory = $true)] [string]$Target ) Write-Host "=============================" Write-Host "Unity Build Starting" Write-Host "Target: $Target" Write-Host "=============================" if ([string]::IsNullOrWhiteSpace($Target)) { throw "ERROR: Target was empty. TeamCity did not pass unity.target correctly." } $config = Get-Content ".\ci\toolchain.json" | ConvertFrom-Json if (-not $config.targets.$Target) { throw "Unknown build target: $Target" } $t = $config.targets.$Target $UnityExe = Join-Path $config.unityRoot "$($config.unityVersion)\Editor\Unity.exe" if (!(Test-Path $UnityExe)) { throw "Unity not installed at expected path: $UnityExe" } Write-Host "Using Unity: $UnityExe" Write-Host "Executing method: $($t.method)" Write-Host "Output: $($t.outputPath)" & $UnityExe ` -batchmode ` -nographics ` -quit ` -projectPath $PWD ` -executeMethod $t.method ` -logFile - if ($LASTEXITCODE -ne 0) { throw "Unity build FAILED for target: $Target" } Write-Host "Build SUCCESS: $Target"