← Back to list

Zip Line — Asset Store Validation

Some of this is getting down into the weeds, but the Asset Store Validator tool reported several potential issues.

Sean Duggan · 2026-07-24 04:51 · 0 claps · 2.7 min read
#unity #asset-store-validator #unity-asset-store #ziplines #unity-project-auditor
Open on Medium ↗
Wiki topics: 🎮 · Gaming

Zip Line — Asset Store Validation

Some of this is getting down into the weeds, but the Asset Store Validator tool reported several potential issues.

The documentation is a fair cop. Let’s run through some of the other ones.

Check Missing Components in Assets

Simple one here. I’d been using a Fantacode Studios script to rotate my item pickup. They removed it.

So, I removed it.

Check Missing Components in Scenes

This was the rotate script again, as we had that Prefab in the scene. And.. hmm… not certain what is missing here, but apparently we don’t need it.

Check Prefab Transforms

Again, a fair cop. One of my prefabs was not set at 0,0,0. An easy fix.

Check Static Variables

This is an interesting one, because it’s trying to avoid future problems.

Starting with Unity 6.6, ‘Fast Enter Play mode’ feature is the default setting for new projects, meaning that in scripts, static variables will keep their values and static events will keep their registered subscribers between Play mode sessions.

You should make sure that this is taken into account for your package scripts.

In two cases, the static fields in question are actually constants, so the easiest solution is to replace them with read-only properties.

public static partial class AnimatorParameters
{
    public static int Ziplining = Animator.StringToHash("Ziplining");
}

public static partial class AnimationNames
{
    public static int JumpUp = Animator.StringToHash("Jump Up");
}

becomes

public static partial class AnimatorParameters
{
    public static int Ziplining { get { return Animator.StringToHash("Ziplining"); } }
}

public static partial class AnimationNames
{
    public static int JumpUp { get { returnAnimator.StringToHash("Jump Up"); } }
}

There are probably other ways to solve that problem, but this works. The next place is in the ZipLineStructure where we maintain a static list of zip lines as they’re instantiated (or destroyed).

static List<ZipLineStructure> _zipLines = new List<ZipLineStructure>();

public static IReadOnlyList<ZipLineStructure> GetZiplines()
{
    return _zipLines;
}

private void OnEnable()
{
    _zipLines.Add(this);
}

private void OnDisable()
{
    _zipLines.Remove(this);
}

We will want to clear the field on reset.

[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
private static void Init()
{
    // Simply re-assigning or leaving a comment inside satisfies the analyzer
    _zipLines = new List<ZipLineStructure>();
}

Check Type Namespaces

This is a simple one. I had generated C# classes for my new inputs, and by default, they get put in the default namespace. Adding my own custom namespace made it all work. In the future, I probably ought to set the Root Namespace.

Further Steps

I also ran the Project Auditor and… there may be some other things to fix.

Also, I’ve come to realize that my current use of setting the transform position directly may break detection of collisions with the Character Controller, so I ought to fix that. And, of course, store images and documentation…


메타데이터
post_id
8dbd7be6b0a0
slug
zip-line-asset-store-validation-8dbd7be6b0a0
url
https://medium.com/@sean.duggan/zip-line-asset-store-validation-8dbd7be6b0a0
canonical_url
https://medium.com/@sean.duggan/zip-line-asset-store-validation-8dbd7be6b0a0
author_url
https://medium.com/@sean.duggan
status
ok
fetched_at
2026-08-26 21:14:02