unity 卡在 building gradle project 的解决方法:

部署运行你感兴趣的模型镜像

unity 卡在 building gradle project 的解决方法:

1. 避免从google下载 Gradle :

除了使用VPN以外,还可以使用阿里云的镜像,如下: (参考 https://jkchen.blog.youkuaiyun.com/article/details/107182562)

找到这个文件夹C:\Program Files\Unity\Hub\Editor\2019.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates

把baseProjectTemplate.gradle里面的

repositories {**ARTIFACTORYREPOSITORY**
            google()
            jcenter()
        }

改为

repositories {**ARTIFACTORYREPOSITORY**
            maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
            google()
            jcenter()
        }

2. 对于使用了 Google Admob Ads 的情况下

对于使用 GoogleAdmobAds 的情况下,会使用 Google Play Service,在 Assets->Play Service Resolver 里点击 Resolver 或者 Force Resolver,会修改工程里 Assets\Plugins\Android\mainTemplate.gradle文件,也会引用 maven.google.com 来加载相关的依赖包,同样的道理,可以进行修改为使用阿里云的。 修改后,注意设置 Assets->Play Service Resolver-->Setting ,避免它每次打包的时候去合并修改 mainTemplate.gradle

以下是一个完整的例子 mainTemplate.gradle:

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

buildscript {
    repositories {**ARTIFACTORYREPOSITORY**
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
**BUILD_SCRIPT_DEPS**}
}

allprojects {
    repositories {**ARTIFACTORYREPOSITORY**
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

// A(hwj---)  AAAndroid Resolver Repos Start , 这一段是用 Assets->Play Service Resolver 生成的,把 maven.google.com 修改成了阿里云的,注意这个注释里把 Android 改成了 AAAndroid,避免被Resolver自动修改了
([rootProject] + (rootProject.subprojects as List)).each { project ->
    project.repositories {
        def unityProjectPath = "file:///" + file(rootProject.projectDir.path + "/../../").absolutePath
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven {
            url "https://maven.aliyun.com/repository/google/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
        }
        mavenLocal()
        jcenter()
        mavenCentral()
    }
}
// A(hwj---)  AAAndroid Resolver Repos End
apply plugin: 'com.android.library'
**APPLY_PLUGINS**

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
    implementation 'com.google.android.gms:play-services-ads:19.5.0' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
// Android Resolver Dependencies End
**DEPS**}

// Android Resolver Exclusions Start
android {
  packagingOptions {
      exclude ('/lib/armeabi/*' + '*')
      exclude ('/lib/mips/*' + '*')
      exclude ('/lib/mips64/*' + '*')
      exclude ('/lib/x86/*' + '*')
      exclude ('/lib/x86_64/*' + '*')
  }
}
// Android Resolver Exclusions End
android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }**SIGN**

    buildTypes {
        debug {
            minifyEnabled **MINIFY_DEBUG**
            useProguard **PROGUARD_DEBUG**
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
            jniDebuggable true
        }
        release {
            minifyEnabled **MINIFY_RELEASE**
            useProguard **PROGUARD_RELEASE**
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
        }
    }**PACKAGING_OPTIONS**
**BUILT_APK_LOCATION**
**EXTERNAL_SOURCES**
    
}**REPOSITORIES****SOURCE_BUILD_SETUP**

 

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

<think>好的,我现在需要帮助用户解决Unity在构建时出现的ArgumentOutOfRangeException和subshaderindex报错。首先,我得先理解这两个错误的具体含义以及可能的原因。 首先,ArgumentOutOfRangeException通常表示某个参数的值超出了预期的范围。而subshaderindex可能与Shader中的SubShader索引有关。可能是在Shader中引用了不存在的SubShader索引,或者在材质设置中配置错误。 接下来,我需要回忆用户提供的引用内容,看看是否有相关的信息。引用[1]提到编译错误和Gradle构建失败,引用[2]涉及资源未替换的问题,引用[3]是关于DLL加载的问题,引用[4]是Gradle版本和SDK设置的问题。虽然这些引用主要涉及Android打包问题,但可能对当前问题没有直接帮助,不过可以参考解决问题的思路,比如资源检查、版本兼容性等。 接下来,我应该考虑Shader相关的常见问题。例如,材质使用的Shader可能在目标平台不支持,或者Shader的SubShader索引不正确。另外,如果项目中有多个Shader变体,可能在构建时出现索引错误。 可能的解决步骤包括: 1. 检查报错信息的具体位置,确定是哪个Shader导致的错误。 2. 检查该Shader的SubShader配置,确认索引是否存在。 3. 确保所有材质使用的Shader与当前渲染管线兼容(比如URP和HDRP可能需要特定的Shader)。 4. 清除Shader缓存,重新导入Shader文件。 5. 更新Unity版本或Shader相关插件,修复可能的兼容性问题。 此外,用户提到的subshaderindex可能涉及到Shader LOD(Level of Detail)设置,如果LOD值设置过高,而Shader中没有对应的SubShader,也可能导致索引越界。 需要建议用户检查具体的错误日志,定位到出错的Shader和材质,然后逐步排查。如果用户没有提供详细日志,可能需要指导他们如何获取更详细的错误信息,比如通过Console窗口查看完整堆栈跟踪。</think>### Unity构建时ArgumentOutOfRangeException与SubShaderIndex报错分析 #### 一、问题原因 1. **Shader资源问题** - 材质引用了不存在的SubShader索引(如SubShader的`LOD`值设置超出实际范围)[^3] - 使用了不兼容当前渲染管线的Shader(如标准Shader在URP/HDRP项目中未转换) - Shader文件损坏或版本不兼容(常见于第三方Shader插件或旧版Unity项目升级) 2. **构建管线配置错误** - Shader变体剥离过度(通过`Project Settings > Graphics > Shader Stripping`过度裁剪) - 跨平台构建时未正确处理Shader配置(如移动端未设置`#pragma target`) 3. **资源引用异常** - 材质与Shader资源关联丢失(表现为材质显示粉红色) - 动态加载Shader代码时索引计算错误 --- #### 二、解决方案步骤 1. **定位具体错误源** 在Console窗口双击报错信息,查看完整堆栈跟踪。典型错误格式: ```plaintext ArgumentOutOfRangeException: Index was out of range. Parameter name: subshaderindex at UnityEngine.ShaderVariantCollection..ctor() ``` 2. **检查Shader配置** - 打开报错涉及的Shader文件,验证SubShader数量和LOD层级: ```glsl Shader "Custom/Example" { SubShader { // Index 0 LOD 200 ... } SubShader { // Index 1 LOD 100 ... } } ``` - 确保材质中设置的`Shader.maximumLOD`不超过实际存在的SubShader索引 3. **处理渲染管线兼容性** - 若使用URP/HDRP:通过`Window > Rendering > Render Pipeline Converter`转换所有材质 - 若使用标准管线:检查`Edit > Project Settings > Graphics`中的默认Shader配置 4. **清除缓存并强制重建** - 删除`Library/ShaderCache`文件夹 - 执行`Edit > Reimport All`重新编译Shader 5. **高级调试(适用于持续报错)** - 在`Edit > Project Settings > Graphics`中暂时禁用`Shader Variant Collection` - 使用`Frame Debugger`逐帧检查材质渲染状态 --- #### 三、预防措施 1. 对第三方Shader使用`Shader.Find()`前添加有效性检查: ```csharp Shader targetShader = Shader.Find("Custom/Example"); if (targetShader == null || !targetShader.isSupported) { // 回退到默认Shader } ``` 2. 在构建前执行`Window > Rendering > Shader Stripping`可视化分析工具 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值