#💻┃code-beginner

1 messages · Page 386 of 1

quick pollen
#

why not use some kind of stack

radiant sail
quick pollen
#

you do

        if (newTrackIndex == lastTrackIndex)
        {
            PlayRandomTrack();
        }```
radiant sail
#

also that code isnt causing the problem at all so i dont rlly wanna mess with it too much

polar acorn
#

Okay, so that means the coroutine is not the problem. Let's go one level out, go to the function that calls StartMusic and comment out StartMusic there, see if there's still lag

quick pollen
#

why not just keep track of the last n songs

#

and remove them from a list

radiant sail
quick pollen
#

and what's the exact issue, sorry

radiant sail
quick pollen
#

you put those songs in a stack

radiant sail
quick pollen
#

and once the stack's length exceeds n you put the song back into the list

quick pollen
radiant sail
#

theres no errors with the audioSource variable tho, using it still plays the sound and removing it stops it so idk

slender bridge
#

Are you using wav file or mp3? Mp3 likes to add a small silence at the beginning of the file

polar acorn
mental aspen
#

Yeah its odd:

radiant sail
slender bridge
polar acorn
radiant sail
#

audio dosent start playing untill it unfreezes after that half second

verbal dome
radiant sail
# verbal dome Show the import settings for the audioclip that it uses?
    {
        if (musicTracks.Count == 0)
        {
            Debug.LogWarning("No music tracks available.");
            return;
        }
        Debug.Log("picking random song");
        int newTrackIndex;
        newTrackIndex = Random.Range(0, musicTracks.Count);
        if (newTrackIndex == lastTrackIndex)
        {
            PlayRandomTrack();
        }
        else
        {
            lastTrackIndex = newTrackIndex;
            audioSource.clip = musicTracks[newTrackIndex];
        }
    }
verbal dome
#

No I mean click the audio clip in your asset browser and screenshot the inspector

verbal dome
#

Try Preload Audio Data

#

So it loads it beforehand instead of when it is first played

radiant sail
languid spire
#

Loads in Bsckground? lots of options to play with

verbal dome
#

That too

radiant sail
#

also i have just noticed this being spammed in console. i have no idea if this is being caused by the music thing but the game still works
i dont know how to fix this tho

#

memory leak apparently

verbal dome
radiant sail
#

oh

polar acorn
# radiant sail

I think it's that Decompress on Load setting. Whatever format it's in, that decompress step is taking a while

languid spire
#

Probably as it's Vorbis which means it can't stream decompress

radiant sail
#

do i just check the preload box on all the music sounds? or do i gotta do more than that

radiant sail
# verbal dome Yeah, try that first

this fixed the lag :)
thats so weird to me since ive made games that legit just spam audio and ive never had that issue lol
infact i didnt even know audio clips had those settings

radiant sail
#

its not causing issues apart from spamming my console with like 10 msgs per action i do

languid spire
radiant sail
#

i dont know how to "run app with -diag-temp-memory-leak-validation cmd line argument"
and i dont understand the rest of what its saying

languid spire
quick pollen
#

can you compare Vector3s in some way?

polar acorn
#

many ways in fact

quick pollen
#

like I want to spawn something inside of a box randomly

#

but I also maybe want a way to make sure that objects aren't too close to each other

swift crag
#

well, if you want to find out the distance between two Vector3s, there's Vector3.Distance..

quick pollen
#

but what if I have like 30 objects

timber tide
#

Use overlap box

swift crag
#

then you would compare multiple times

quick pollen
#

I don't want to do a distance check for all

timber tide
#

Right, just do overlap

swift crag
#

you want to prevent two objects from being too close together, but you also don't want to check if any two objects are too close together?

#

that sounds challenging

swift crag
#

explain your actual problem

quick pollen
#

well I was just thinking of ways of doing this

#

like if I wanted to spawn random lightning beams

#

I don't want them to overlap

timber tide
#

Distance is useful for comparing two objects, but when you're populating multiples then that grows exponentially so grab yourself a shape and compare with that

swift crag
#

it grows linearly in cost to compare your distance to many objects

#

to compare the distance between all-pairs grows quadratically

#

physics can be remarkably inefficient here

timber tide
#

mr math words

swift crag
#

especially if you're trying to spawn many objects in sequence, since you have to update the physics world over and over as you add new objects

slender bridge
#

The scope of my projects seems to grow quadratically...

swift crag
quick pollen
#

that's n^2

swift crag
timber tide
#

I did compare distance with overlaps recently. And honestly overlap sphere did pretty well compare to distancee

swift crag
#

that's why i described both

timber tide
#

Magnitude comparison also out performs both

#

(obviously out performs distance)

swift crag
#

If you want to distribute a large number of points without any two points being too close together, you can use Poisson disk sampling

quick pollen
#

also did yall know you can colorcode your scripts?

#

i didnt

swift crag
#

If you just need to place down 10 objects without overlaps, pick random points and do rejection sampling

quick pollen
#

honestly id try that

timber tide
#

really 30 objects isn't going to break anything so go with w/e

quick pollen
#

im making a bullethell so i want it to be very optimized

#

plus i wanna learn

#

how could I even go about adding voronoi?

swift crag
#

you don't actually need voronoi noise

#

it's based on points randomly positioned within grid cells

#

it sounds like you only care about the points

quick pollen
#

yeah

swift crag
#

note that this does not prevent two points from being too close together

quick pollen
#

it doesnt?

timber tide
#

so is this like baking a signed distance field

quick pollen
#

my vsc dotnet broke

#

ffs

#

how can I run it

swift crag
quick pollen
#

it breaks my intellisense

swift crag
swift crag
#

Although it should keep going.

quick pollen
#

well idk

#

Input as an example isnt taken as anything

swift crag
#

restart the editor first

quick pollen
#

and I get no errors even if I should

quick pollen
#

I remember last time only a full restart did

#

weird....

swift crag
#

VSCode likes trying to download new versions of .NET when I get on a flight

#

very annoying

quick pollen
#

lol

swift crag
# swift crag

Poisson disk sampling can give a decent looking distributions of points

#

note that it doesn't randomly fill them in

#

it grows out from a starting point

#

You could fill the arena with points and then randomly draw them

#

Another thing you can do is "relaxation"

rich adder
#

iirc vertex has a link to a disc sampling script

swift crag
#

pick random points, then do a few iterations where you push nearby points apart

opaque mortar
#

can you recomend a totorul for a gun

rich adder
opaque mortar
#

ak-47

rich adder
#

that still is vague..

swift crag
#

try spending 15 seconds to punch "unity gun tutorial" into google

rich adder
#

fr ^

swift crag
#

maybe not "untity gun totorul" though

#

i don't think that will work

opaque mortar
#

tryed

rich adder
#

try harder

swift crag
#

am i about to be told that there are zero gun tutorials

verbal dome
#

But they all have ak-74, I want ak-47

swift crag
#

aka-47

rich adder
polar acorn
rich adder
#

"I tried doesnt work"

quick pollen
#

I was hoping

rich adder
#

you're passing a number to a transform

quick pollen
rich adder
polar acorn
quick pollen
#

ig I need 3 randoms

swift crag
#

I've written extension methods for things like random points in bounds

#

It can be convenient.

rich adder
swift crag
#
using UnityEngine;

public static class Vector2Util
{
    public static float Draw(this Vector2 self)
    {
        return Random.Range(self.x, self.y);
    }
}
#

e.g.

quick pollen
rich adder
rocky canyon
#
using Foo = UnityEngine.Debug;
Foo.Log("Hello, World! from Foo");
Debug.Log("Hello, World! from UnityEngine.Debug");``` is this how alias's work?
#

just seems too easy

quick pollen
rich adder
quick pollen
#

this should work

rich adder
quick pollen
#

tho i dont even want to instantiate

#

i want to use my projectilepool

rich adder
#

though if you want a sphere random shape without needing 3 floats you can do Random.insideUnitSphere / onUnitSphere

quick pollen
#

wdym

#

those are bools?

rich adder
quick pollen
#

ehhh I'm fine with this one

#

ty tho

rich adder
#

yeah no worries just pointing out there are options

rocky canyon
#
Vector3 RandomInCube(Vector3 bottomLeft, Vector3 topRight) {
    float randomX = Random.Range(bottomLeft.x, topRight.x);
    float randomY = Random.Range(bottomLeft.y, topRight.y);
    float randomZ = Random.Range(bottomLeft.z, topRight.z);
    
    return new Vector3(randomX, randomY, randomZ);
}```
quick pollen
#

the script will only be like 20 lines

rocky canyon
#

snatched it from my own Utils

#

yea im just vibing

quick pollen
#

i doubt itll need more clarity

quick pollen
#

u saw my game

#

i have a sphere arena for my first attack

rich adder
quick pollen
#

so technically I could use it

rocky canyon
#

im just anti-sphere

rich adder
#

the only caviet of this is that you cannot pick uneven distances, so all 3 axis are the same limits

quick pollen
#

tho i want to make sure that the sphere is more of a circle

rocky canyon
#

RandomInPancake

quick pollen
#

but I could just multiply the y point with 0

rich adder
#

Random.insideUnitCircle 😛

quick pollen
#

oh right

#

danke

#

how can I tell how big the unitCircle * radius is?

rich adder
#

sphere also returns a V3 so you can do stuff like rotate it etc

quick pollen
#

no way to visualize it somehow?

rocky canyon
#

I wish Unity6 would fix their <color = webcolor> bug

rich adder
rocky canyon
#

Wisphere.. sounds like a invasive hornet

#

not sure why.. but Unity prioritizes my static Debug class over its own

rich adder
rocky canyon
rocky canyon
quick pollen
#

this is annoying

rich adder
rocky canyon
quick pollen
#

cuz I don't need the y axis to be random

rocky canyon
quick pollen
#

I want it to be 0

#

cuz im spawning lightning beams

#

so i dont want them to be in the air

rich adder
quick pollen
#

yeah..

rich adder
#

the property returns a method

#

so just make a copy and 0 out the Y then set it back

quick pollen
#

i wish I could do it without constructing a vector3

rich adder
#
var pos = myPosition;
pos.y = 0;
mything.position = pos;```
rocky canyon
#

now im having to go and find the hexvalues for all of em

rich adder
#

I don't mind since I do web too

rocky canyon
#

for now

#

im hoping they fix it

rich adder
#

but yeah thats kinda whack

rocky canyon
#

its weird that it eats the ending tag

#

😄 digi asked me had i forgotten to close it

rich adder
#

all the other tags working ? I'm gonna need those soon, I'm making a very intense text based game

rocky canyon
#

i haven't tested many other ones but i can real quick

rocky canyon
#

double debugs 🤢

rich adder
spare mountain
rocky canyon
#
    public static void Log(string msg) => Log(msg, "#FFFFFF");
    public static void Error(string msg) => Log(msg, "#FF0000");
    public static void Warning(string msg) => Log(msg, "#FFFF00");
    public static void Red(string msg) => Log(msg, "#FF0000");
    public static void Orange(string msg) => Log(msg, "#FFA500");
    public static void Yellow(string msg) => Log(msg, "#FFFF00");
    public static void Green(string msg) => Log(msg, "#00FF00");
    public static void Blue(string msg) => Log(msg, "#00FFFF");
    public static void Indigo(string msg) => Log(msg, "#4B0082");
    public static void Violet(string msg) => Log(msg, "#800080");
    public static void Bold(string msg) => Log(msg, "#FFFFFF", bold: true);
    public static void Italic(string msg) => Log(msg, "#FFFFFF", italic: true);
    public static void Strikethrough(string msg) => Log(msg, "#FFFFFF", strikethrough: true);```
rich adder
#

huh.. why not make the colors Const
You only need 1 method, the colors can be store in a separate file as constants

rocky canyon
rich adder
rocky canyon
#

ya no, its everywhere.. i haven't tested TMP

#

but im assuming its there too

naive pawn
rich adder
#

Imo if you want to big brain it.
Enum for the message type, and Const for the colors

#

then you only need 1 method

rocky canyon
#

ohhhh! @rich adder i figured something else out..

        Debug.Log("<color = yellow>Test Debug</color>");
        Debug.Log("<color=yellow>Test Debug</color>");
        Debug.Log("<color='yellow'>Test Debug</color>");```
#

it actually isn't broken... the spaces i had in the <color> tag is what broke it..

rich adder
rocky canyon
#

older versions w/ the same code would work.. im guessing now it has to be next to each other

#

YAY i can get rid of all these hex values

rich adder
#

hell yeah!

cunning flint
#

can someone tell how Quaternion works

rich adder
cunning flint
rich adder
#

just know it works with rotations

#

thats all you need to know

rocky canyon
#
    public Color color = Color.cyan;

    void Start()
    {
        string hexColor = ColorUtility.ToHtmlStringRGBA(color);
        Debug.Log($"<color=#{hexColor}>{msg}</color>");
    }``` this was my work-around
rich adder
#

unity has abstracted this into a class for use so we dont have to worry

cunning flint
#

am trying to use it

rocky canyon
#

using Color types.. but passing them thru ToHtmlStringRGBA()

#

phew, thats a long method name

rich adder
cunning flint
#

but i just damb i think

rocky canyon
cunning flint
#

i really dont know just trying to use it

rich adder
#

ah yes ur only passing 2 arguements

rich adder
#

the function expects a vector3 or 3 floats

#

you only passed 2 floats

rocky canyon
#

RotationY * delta is 1 param

#

RotationX * delta * sens is ur 2nd

#

u need a third

cunning flint
#

ok let me see

rich adder
quick pollen
quick pollen
rich adder
#

looks like a fpv camera rotation

cunning flint
#

am new to c#

rich adder
#

You should not multiply Mouse Inputs with DeltaTime

#

just sensitivity will do

cunning flint
#

arlight

quick pollen
#

or just use cinemachine

cunning flint
#

am trying to learn c#

#

ok

rich adder
rich adder
cunning flint
#

he have good vids

rich adder
#

they are horrible for new comers

#

you're gonna be stuck left and right in his channel to do 1 thing

#

bad

cunning flint
rich adder
quick pollen
rich adder
#

You dont need to keep spamming the screenshot, i know who he is

rich adder
quick pollen
#

im lagging so bad

rich adder
#

also w3schools

summer stump
rich adder
#

Code Monkey has specific videos that are helpful, the rest is a "Watch this other video to learn about this video "

#

I hate that style of video

#

if you cant teach something in one video without referring another video first, you failed as a teacher

quick pollen
#

i think my windows defender is doing a scan, bonking my cpu in the process

#

ffs

rich adder
quick pollen
#

cant even like get a proper indicator

rich adder
quick pollen
#

i should linux

#

full control

rich adder
#

hell yea

#

we need more devs on linux 😢

quick pollen
#

I'd just need a whole new computer

#

for that

rich adder
#

Unity linux needs more updates 😦

willow scroll
rich adder
#

that ping pong shit is annoying

quick pollen
#

this is like asking "do you have to teach the full motor function basics at the beginning of a tutorial about bicycling?"

rich adder
willow scroll
verbal dome
willow scroll
verbal dome
#

Not necessarily C#, you can learn it as you go. But that's an opinion and most here probably disagree

rich adder
#

in hindsight ofc I would learn C# first but your mind doesn't think that way when you get into GameDev

#

but we all know just doing plain C# lessons is boring without a Game context

#

seeng a ball move because you put code is more interesting than a Console Log

willow scroll
quick pollen
verbal dome
#

Yes, that's what I mean with basics of programming

#

Or meant to say lol

willow scroll
rich adder
verbal dome
#

My first programming experience was Angelscript which is a C++ scripting language so it is sort of similiar to C#

#

Which probably gave me a good kickstart

rich adder
cunning flint
#

my first working script without google

digital kelp
#

My unity keeps crashing, not sure if this is the reason but it seems weird
Went to debugging mode and looked into a class instance (TileManager.instance) and when looking at what it contains, the static members->instance->static members seem to loop a bunch

#

Anyone know what could be causing this?

#

And/or if it would be a likely culprit for crashes?

rocky canyon
#

alright.. i did even more testing..

  • These colors are Rich Text Colors.. and would work inside the console or the GUI like <color=lime>
  • These colors are Unity's Color and are now the only ones that will work in Unity6 like <color=green>
rich adder
digital kelp
verbal dome
#

Are you sure it worked before?

rich adder
rocky canyon
#

its b/c now it only works w/ unity's colors

naive pawn
#

it has 1 instance that's stored statically

#

and the instance also has access to statics

rocky canyon
naive pawn
#

you're just looking at a circular reference

rich adder
#

ahh

digital kelp
rich adder
#

I see it now

naive pawn
rich adder
#

thought you said it was crashing

digital kelp
#

it is

#

idk why tho

naive pawn
#

if there's a crash it's not related to this

digital kelp
#

welp, you know where to find crash logs then?

naive pawn
#

well it could be this, but not specifically the circular reference

rich adder
eternal falconBOT
#
📝 Logs

Documentation

Editor logs

Windows: %LOCALAPPDATA%\Unity\Editor\Editor.log
MacOS: ~/Library/Logs/Unity/Editor.log
Linux: ~/.config/unity3d/Editor.log

Unity Hub

Windows: %UserProfile%\AppData\Roaming\UnityHub\logs
Mac: ~/Library/Application support/UnityHub/logs
Linux: ~/.config/UnityHub/logs

rocky canyon
rocky canyon
#

this is only half true now

rocky canyon
#

if they overlap w/ Color ones ur fine 😄

digital kelp
# rich adder !logs

tried looking into %TMP% but found nothing, only some old unity logs from several hours before my crashes

rich adder
verbal dome
#

I use it for stuff like LogColored(text, Color.red)

#

And LogColored would do the conversion in the method

rich adder
#

and if you need custom colors not a bad idea to go with the Const as I suggested to, thats what I do for my custom colors

#
    public static void Log(string msg) => Log(msg, MyColors.AnInterestingPurple);
public class MyColors
{
    public const string AnInterestingPurple = "#985bc9";
}```
rocky canyon
#

until it gets fixed.. and i can use richtext colors again.. altho i may just keep it like this

#

wait. i can include the # at the front of hexColor

#

nvm, just gonna make a function that returns the full interpolated string w/ the color code

digital kelp
#

Could someone explain this statement?

You wouldnt so happen to have your Node class extending monobehaviour would you? I found out the reason why my unity was stalling is because my Node class was extending monobehaviour and that why it seemed that there was an infinite loop.
What does extending monobehaviour mean in the code?

naive pawn
#

class Node : MonoBehaviour

verbal dome
#

The stuff you quoted makes no sense to me though

#

I mean it does in a way, but just inheriting from MonoBehaviour does not introduce infinite loops

naive pawn
#

MonoBehaviour is for components, so if you have a class that isn't a component but inherits from MonoBehaviour, it could have some weird effects

digital kelp
#

Alright, so to avoid it I just remove the monobehaviour from "class node"

naive pawn
#

are you using it as a component?

digital kelp
short hazel
#

If it's not meant to be attached to a game object, it's not needed to derive from MonoBehaviour.

digital kelp
#

Alright

naive pawn
#

not all classes extend MonoBehaviour. MonoBehaviour is something unity uses, you extend it if you want to directly hand over the class to unity

digital kelp
#

Following a tutorial, Node is just a, idk what to call it, blueprint for the node type

rich adder
#

if you need it to be on a gameobject then it needs to be a component, otherwise regular object works fine

naive pawn
#

"node" is pretty broad

rich adder
#

if its for path finding it unlikely it needs to be MB

digital kelp
#

using it in a pathfinder script

short hazel
#

It's pretty much what all classes are, blueprints

naive pawn
#

"node" can refer to a single member of most structures, fyi

#

of data structures like trees or linked lists or graphs, or of more concrete structures like paths

digital kelp
#

yea, maybe not the best name ig

naive pawn
#

you could make it an inner class

short hazel
#

Not if it's used outside that outer class

#

Node is fine, PathNode if you'd want to be explicit

naive pawn
#

that aside though, IMO i'd have something enclosing the nodes and only have that manage the nodes directly

short hazel
#

That's not ideal, having to type the name of the outer class each time you need to access the inner class

naive pawn
#

yeah but would have you have to use the inner class outside

short hazel
#

Some classes do that, but they keep the inner class private and methods return that through an interface type

#

If you mark it public, you intend to

naive pawn
#

you don't have to though

#

i just mentioned that in case you would want to

short hazel
#

In that case take it out and move it to its own file

naive pawn
#

maybe what im thinking of doesn't make sense in this context, idk

naive pawn
#

what im thinking of is just not exposing the inner class at all

timid oriole
#

Hey guys I would like to learn more about unity's particles, trails, lighting and greyboxing, shaders and camera effects is there a full course I can purchase that covers all of these topics I'm familar with lighting a bit but thats all

rocky canyon
#

aye! 💪 gott'r fixed up

naive pawn
robust kelp
#

!code

eternal falconBOT
summer stump
#

Imo, if you pay for learning unity, you made a big mistake. Paying to go to college for computer science would be the only thing I would pay for in terms of development

swift crag
rocky canyon
#

i agree, you can easily find tutorials/ crash courses for each one of those topics.. get enough information under your belt to start experimenting on your own..
and then refine ur search/ investigate farther on specific area's that concern you

swift crag
#

people using Unity 2017

#

i'd love to teach game development at that level

rich adder
#

yeah a lot of CS grads cant write a single line to save their life

swift crag
#

but a lot of it is kinda uhhhh

#

mangled

naive pawn
rich adder
#

prefer EE myself

#

you dont need school for software

#

its a scam

naive pawn
#

EE is pain 😔

rich adder
#

true! fun as hell though (masochist? )

naive pawn
#

there's a lot of leaks at my school lmao...

#

pain in EE is not metaphorical

rich adder
#

forreal

swift crag
#

i did CS and chemistry in college and then pursued a doctoral CS degree, but it didn't realy agree with me

rich adder
#

it will shock you how painful it is

robust kelp
#

i added source engine movement and now i get stuck on slopes i would really appreciate if someone could find whats wrong with this code https://gdl.space/xojozahaji.cs

swift crag
#

i eventualy finished with a masters in CS after re-discovering my general enjoyment of game development

naive pawn
#

i mean, any subject can be literally painful if you bang your head against the desk enough

eternal needle
# naive pawn SE is where it's at

Depends entirely on the school. Usually SE near me just requires chem and physics for no reason first year. Then where I studied, they didnt even code much. Literally like 8 of the courses were drawing diagrams and "designing"

naive pawn
#

well, something i want to get better at tbh

swift crag
#

draw that UML diagram

naive pawn
#

my design is... not great

#

my architecture is a mess

swift crag
tranquil scarab
#

small question. if you use a spherecast does the raycasthit take the info of the first hit object? or can it be any of the hit objects

swift crag
#

Particualrly anything involving slopes

swift crag
swift crag
#

Are you thinking of what happens if the sphere starts out overlapping several objects?

tranquil scarab
#

yeah

swift crag
#

3D cast functions ignore colliders they start inside of

#

so the answer is...n/a

tranquil scarab
#

oh k tnx

swift crag
#

SphereCast will not detect colliders for which the sphere overlaps the collider. Passing a zero radius results in undefined output and doesn't always behave the same as Physics.Raycast.

rich adder
#

You can use overlap if you need to detect when inside already
Make sure you always use a non alloc of these functions, they are pretty allocative (just watch profiler)

swift crag
#

I've used a mix of the two

timid oriole
#

considering how low quality most unity tutorials a paid option for high quality doesn't sound bad at all

slender nymph
#

problem is, you won't know if it is high quality until after you have paid

summer stump
timid oriole
#

That's why reviews exist

#

This could be said for anything

naive pawn
#

are you going to check all of them out though

summer stump
naive pawn
#

for free stuff you can just skim em

rich adder
summer stump
#

And the free ones ARE generally high quality

eternal needle
#

You mean those reviews from people who just learned how to write Debug.Log, bought out reviews, reviews from the creators friends?

summer stump
#

It is ALWAYS a waste of money for this

rich adder
naive pawn
summer stump
naive pawn
#

paid ones... i mean, sunk cost fallacy.

timid oriole
swift crag
summer stump
#

Brackeys is very popular

naive pawn
naive pawn
swift crag
eternal falconBOT
#

:teacher: Unity Learn ↗

Over 750 hours of free live and on-demand learning content for all levels of experience!

slender nymph
timid oriole
#

Aethenosity unity learn is absloute garbage they have you clicking a new video every 2 minutes

edgy prism
#

Hey just a quick question how would I go about lerping a cameras orthographic size?

timid oriole
#

Why don't they make one listen one lecture its very annoying

summer stump
swift crag
rich adder
slender nymph
timid oriole
#

Embarssing to think a multi million dollar company doesn't know how to format a video

swift crag
#

or maybe, just maybe

#

they did it that way for a reason

eternal needle
#

Your complaint about it has nothing to do with the actual lesson. This is just silly

swift crag
#

instead of making a horribly edited 3-hour long video tutorial

raw token
#

I rather liked the Junior Programmer Pathway. Most of the guidance is in the text, and where the videos were necessary you could just watch them at 2x speed

timid oriole
#

imagine it from my perspective I watch the video

#

then every 2 fucking minutes

#

I have to vote yes I watched it

naive pawn
#

i don't really like the videos tbh

timid oriole
#

then click a new one

edgy prism
naive pawn
rich adder
swift crag
#

i can't wait for summer vacation to be over

timid oriole
#

When I want to get in a long 6 hour or so study session it wastes so much time

slender nymph
naive pawn
eternal needle
edgy prism
rich adder
#

you dont overload with information for 6 hours

slender nymph
timid oriole
naive pawn
rich adder
swift crag
#

videos are horrific for skimming

naive pawn
#

yeah

#

exactly

#

so like, why so many

summer stump
naive pawn
#

i'm just supposed to trust there's nothing important that's only in the videos?

timid oriole
#

It doesn't take longer than 5 minutes to comprehend all the basics and I sat there for over an hour

rich adder
#

the microsoft ones are also delivered in short bursts

eternal needle
swift crag
#

you can also just read the manual

rich adder
summer stump
naive pawn
swift crag
#

I came into Unity with a very large amount of programming experience, so I didn't need too much help to figure out the editor

#

but getting a solid handle on the terms and concepts would have been helpful

timid oriole
naive pawn
naive pawn
summer stump
#

Skipping a whole video I mean

naive pawn
#

can't really speed up audio and listen for keywords

swift crag
#

skipping over content, yes

#

that's fine, as long as the content is coherently split up

naive pawn
#

oh, yeah that makes more sense

naive pawn
#

doesn't really feel like it

timid oriole
summer stump
#

In learn it is

swift crag
eternal needle
naive pawn
summer stump
rich adder
timid oriole
rich adder
#

you learn through trial and error..and the docs..

swift crag
rich adder
#

like any other human being does

naive pawn
swift crag
#

you are now greyboxing

warm thunder
#

hey is there a way where u can use 1 animator to triger an animation of an other animator, i kinda need it for an attak animation

swift crag
naive pawn
timid oriole
#

I've put objects in my scene lol but I'm talking level design itself

swift crag
rich adder
timid oriole
naive pawn
swift crag
#

i don't feel like you're going to get into "bad habits" with something as arbitrary and subjective as level design

#

i suppose i'd look at old GDC talks; they're useful for learning about specific niches

naive pawn
rich adder
timid oriole
naive pawn
timid oriole
naive pawn
#

man, why do the manual/docs vary in quality so much?

#

i mean, it isn't much, but it's more than i'd expect

rich adder
#

also look up GDC talks, etc

timid oriole
rich adder
naive pawn
timid oriole
polar acorn
naive pawn
#

it doesn't give me confidence that the rest is well-written

naive pawn
rich adder
timid oriole
#

Is probuilder the optimal asset to download you guys think or nah

naive pawn
rich adder
#

Tilemap was poorly documented
Sciptable Tiles etc

swift crag
naive pawn
naive pawn
rich adder
naive pawn
#

it's perfectly comprehensible, but if this simple stuff isn't getting vetted, what else isn't

dense root
#

There is no such thing as perfect documentation, you're free to try out other engines if you think Unity isn't adequate

swift crag
#

but that's not exactly a fatal blow

rich adder
naive pawn
#

it isn't, but it makes me question if a fatal blow would get in as easily

rich adder
#

it should be public documentation system like github

dense root
#

That would be really nice

rich adder
#

yes this way we can contribute to documentation, and fix some of the poorly written shit lol

naive pawn
verbal dome
#

Didn't vertx make a browser plugin that allows for community notes on the docs or something 🤔

dense root
naive pawn
#

that's far besides the point here

dense root
#

Not really.

swift crag
#

there's a very minor stylistic issue with how they wrote "1" and "zero"

swift crag
#

are you seeing something I am not seeing?

naive pawn
swift crag
#

this makes you look like you have no idea what you're talking about

naive pawn
#

there's a lot more that is written ambiguously, and the manual isn't much better

naive pawn
swift crag
#

What?

#

I genuinely do not understand what you're going on about.

naive pawn
#

that's a sarcastic remark...

swift crag
#

it didn't work

dense root
#

No it isn't. It's a fact.

naive pawn
#

are we referring to the same message

naive pawn
swift crag
#

i have plenty of problems with the documentation (e.g. it doesn't clearly describe how collision and trigger messages behave when a rigidbody is present)

naive pawn
#

yeah, that's about what im referring to

swift crag
#

collision messages only go to the rigidbody's object; trigger messages go to both the rigidbody's object and the collider's object

swift crag
rich adder
naive pawn
#

i don't think i can quickly find examples for you if you really want me to, i haven't touched the docs in a month or so?

swift crag
#

instead of giving us an extremely confusing non-example and then further confusing everyone around you

naive pawn
#

yeah i probably couldve made it clearer that the "example" isn't directly related to the issues im referring to

#

that's just the one i found clicking a link someone else sent

timber tide
#

They cant write docs because the ones who built most of the engine are long gone ;p

rich adder
#

they aint lying

naive pawn
rich adder
#

Spline is a great package but also its very limited in documentation, same with Water, they're new so you can cut some slack there but doing all the guesswork "until it works" isn't fun

naive pawn
#

welp it's about to be 3am and i didn't find the method i was thinking of, so well, maybe idk what i'm talking about shrugsinjapanese

rocky canyon
#

i dont understand..

twin bolt
wintry quarry
#

it is instant

#

and does what you tell it to do

verbal dome
twin bolt
wintry quarry
#

Tween frameworks simplify that for you

#

it's also possible in Update or a coroutine

wintry quarry
#

so it will only run for one frame

rocky canyon
#

naughty attribs can access unity's but not mine

#

viceversa-ly

twin bolt
wintry quarry
# twin bolt This is in update

basically what you typically do is set the target value inside the thing that happens ONCE. Then in Update or a coroutine you do the frame-by-frame interpolation, aka calling MoveTowards etc

rocky canyon
#

which is odd to me.. b/c ofc i pull the the same calls to the same functions (1 from each) inside a namespace.. and it would pick up my class and not unity's..

slender nymph
rocky canyon
#

yet it will in NaughtyAttribs

wintry quarry
#

e.g.


void Update() {
  if (clickedThisFrame) {
    target = something;
  }

  current = MoveTowards(current, target, Time.deltaTime * speed);
}``` this pattern @twin bolt
twin bolt
rocky canyon
#

analogy.. b/c in my script im working in now.. i dont declare either class and even if i have using UnityEngine i have to specify it

#

UnityEngine.Debug

#

i need to look up extension methods i think

#

and see what they do

slender nymph
#

if you are working within a namespace that has a type with the name Debug in it declared, then it will attempt to use that type rather than the one in the other namespace unless you either alias it or specify the fully qualified name of the type

rocky canyon
#

vs, what trickery this is

rocky canyon
verbal dome
slender nymph
rocky canyon
#

nvm, i think i talked my way thru it

#

it doesnt need to be static if i do what im thinking of doing

#

namespace.Debug.Function(); <-- i do that and then i can
Debug.LogError(); <-- use unity's w/o worrying.

verbal dome
#

Wouldn't it be less confusing to use a unique name for your class, instead of Debug?

rocky canyon
#

i thought i could combine them

rocky canyon
#

but having it Debug was kinda a plot point

#

but i can rename it..

verbal dome
#

You can name it Debug but it won't be the same Debug and you can get name clashes

twin bolt
rocky canyon
#

i was thinking i could :
using Debug = UnityEngine.Debug;
and then, use MyStuff.Debug.Log(); (when i needed that), but i had to find out the hard way that i couldn't just mark it static b/c it worked at first.. until i needed Unity's and realized it wasn't consistent anymore

wintry quarry
twin bolt
hidden heath
#

I'm going to give a word of advice for any beginners.
Please don't do:
if (exampleBool == false)
Please do:
if (!exampleBool)
It's basically the same but it's a lot easier to do the second one.

polar acorn
#

It's the first step to realizing that an if statement doesn't take a condition, it takes a boolean

languid spire
polar acorn
#

You don't need a == or a < or whatever for an if statement, you can use any boolean variable

polar acorn
austere monolith
#

whats the component with the text in a tmpro text? like if you wanted to use

public TextMeshProUGUI text;

text.(component for accessing text)

languid spire
polar acorn
#

including you

languid spire
#

ffs if (a == true) or if(a) I mean who gives a shit?

austere monolith
#

whats like a code holder website

#

i forgot

polar acorn
polar acorn
eternal falconBOT
languid spire
austere monolith
polar acorn
verbal dome
austere monolith
#

its the cube getting destroyed and im trying to use activeself to check if its destroyed yeah

verbal dome
polar acorn
austere monolith
#

oh i dont know why i didnt think of that

#

its late

austere monolith
#

is there some reason why the text isnt working

#

im tryna figure that out

languid spire
austere monolith
#

dang

rocky canyon
austere monolith
#

that looks like it has good potential keep going!

rocky canyon
#

soo, I wrapped my Custom Debug class inside a namespace..
(and i kept it static, renamed it a bit) and then at teh top of the script
using Debug = renamedCustomDebug;
and then i can use my custom debugs w/ Debug.Log() and Unity's when i need an error or something is just UnityEngine.Debug.Log()

rocky canyon
#

actually half that b/c i added in debugs inbetween the other debugs lol

hasty sleet
#

Minimizing code since the implication is every character counts

#

Well minimizer might be a better word than obfuscator. They look similar to me

dry tendon
#

How could i adjust the limit of the circle of the slider?

summer tree
#

I think it is unreasonable to write your code in the most minimal way to increase performance, unless you are making a God Of War I don't think there will be a noticeable difference between writing "condition" or "condition == true".

summer stump
#

Didn't look like anyone mentioned performance either. There was mention of character limits long long ago though

summer tree
eternal needle
swift crag
summer stump
swift crag
dry tendon
#

thanks!

inland monolith
#

so I have my canvas set so that it scales with the size of the widow but the issue is that the game objects themselves dont abide by this rule since they're not ui is there a way to make them like the canvas?

swift crag
#

It sounds like you're trying to do something weird here

#

non-UI renderers are being viewed through a camera

#

and the camera will not "zoom out" (orthographic) or widen its field of view (perspective) just because you increased your resolution

inland monolith
#

youre so right for that

inland monolith
swift crag
#

Are you trying to draw a background?

inland monolith
swift crag
#

I can't really make anything out from that

inland monolith
#

like the before and after of it

#

like If I change the window of the game it moves the game objects itself

#

or doesnt ig so it creates weird overlap but yes its supposed to be a background

swift crag
#

don't parent your non-UI objects to the canvas

inland monolith
#

they arent

swift crag
#

Show me the inspector for one of these objects -- and post it in #📲┃ui-ux

#

this is a UI problem

worthy merlin
#

Are you able to change the "Element 0" when a class is being added to a list of classes. I'd like them to say Wave 0 instead

timber tide
worthy merlin
#

Was kinda hoping to avoid custom editor based changes but if thats something that can't be changed with ordinary coding logic then so be it.

polar acorn
#

It'll use the value of the first serialized String field

#

So you can give it a name field and it'll display that

timber tide
#

Oh does that work on list indicies? I know it does work on serialized struct/classes

polar acorn
#

This looks like a list of some sort of serialzied struct

#

so it'd work for that

timber tide
#

if so, I guess you can serialize and hide the string value, then increment it with OnValidate

livid oxide
#

Hi so rn im making a clicker type game where when you get to 1000 it makes th number 1.00K. For some reason its rounding the third decimal and I can't find a way to stop it from rounding. Do you know how I could fix it?

wintry quarry
livid oxide
#

so as you can see in the first image the amount of stars i have is 1045 but its saying i have 1.05K in the text so i presume its rounding to the second decimal place being 1.05K when it should still be 1.04K

wintry quarry
#

Also critical information here would be: what is the data type for stars

livid oxide
#

oh sorry it is a float

wintry quarry
#

But float is almost definitely not going to be sufficient for a clicker game

#

If it's exponential like most

wintry quarry
livid oxide
agile bison
#

Is Microsofts C# documentation sufficent enough to get proficent in C# or would you need something to suppliment it?

wintry quarry
#

it's for looking things up as needed

#

it will not teach you C#

frosty hound
#

You don't read documentation to get proficient, it's reference material. It's enough to use yes, alongside normal Google.

wintry quarry
#

That would be like trying to learn English by reading the Dictionary

agile bison
#

Gotcha

wintry quarry
agile bison
#

Thanks

digital cave
#

I have a parent game object, it has only rigidbody and on trigger enter script attached to it and I also have child game object that is attached to parent game object. My child object has collider with isTrigger turned on and its also tagged with MyTag1. I am trying to detect MyTag1 on trigger enter, however no matter what I try I cant make it work. The issue this the obstacles that enters the trigger detects the parents tag instead of the child. The only solution I found is this, which is a really bad solution since it relies on objects positions in the hierarchy. How can I solve this issue and detect my child objects tag from a parent. (I don't want to attach a script into my child objects)

    void OnTriggerEnter(Collider other)
    {
        // Example 1
        Collider[] myCollider = GetComponentsInChildren<Collider>();
        
        if (myCollider[0].gameObject.CompareTag("MyTag1"))
        {
            //This works but it relies on hierarchy position, which is really bad.
        }
        
        // Example 2
        if (CompareTag("MyTag1"))
        {
            //This doesn't work.
        }

        // Example 3
        if (other.CompareTag("MyTag1"))
        {
            //This doesn't work.
        }

        
        // Example 4
        if (gameObject.tag == "MyTag1")
        {
            //This doesn't work.
        }

        // Example 5
        if (other.gameObject.tag == "MyTag1")
        {
            //This doesnt work.
        }

        // Example 6
        foreach(Collider collider in myColliders)
        {
            if(collider.gameObject.CompareTag("MYTag1"))
            {
                //This also works, but I feel like there is a easier and better way to achieve this.
            }
        }
    }
timber tide
#
// Example 3
if (other.CompareTag("MyTag1"))
{
    //This doesn't work.
}

Is this what you're trying to do? If so then the targ on the collider object is incorrect then

digital cave
eternal needle
digital cave
#

It works when it's not a child object

swift crag
#

My child object has collider with isTrigger turned on and its also tagged with MyTag1. I am trying to detect MyTag1 on trigger enter

This does not make sense. The collider you get is the other collider in the trigger overlap, not your own

swift crag
#

Trigger messages don't tell you which collider caused the overlap on your side

digital cave
#

I see, the only way to achieve this without actually adding a script into my child object is this then;

        Collider[] myCollider = GetComponentsInChildren<Collider>();

        foreach(Collider collider in myColliders)
        {
            if(collider.gameObject.CompareTag("MYTag1"))
            {
                //This also works, but I feel like there is a easier and better way to achieve this.
            }
        }
eternal needle
#

no, this makes no sense to do

swift crag
#

this doesn't actually tell you anything about the trigger overlap

eternal needle
#

Anytime any child collider is entered, you're gonna be looping through every single collider and checking if one has MYTag1. This is useless, you still dont know which one actually was used in the collision

digital cave
#

So the only logical way to do this, is to add a script into my childs?

formal escarp
#

Hey. I need help understanding a tutorial. https://www.youtube.com/watch?v=vNL4WYgvwd8 in the minute 4:06 bro is calling a var called "healthComponent" but he never made one? i dont really get that part. can some1 explain?

BMo

🍍 In this Unity Tutorial we'll be setting up the absolute basic essentials for a generic Health script which will allow of us to set a Max Health and Take Damage as well as Heal.

The Health script can be used on Players, Enemies, GameObjects, whatever you want!

This is a follow up to the Health Bar Tutorial (link below) I've done in the past,...

▶ Play video
eternal needle
formal escarp
#

i know its a variable name

#

i literally said that.

eternal needle
#

then whats the issue?

timber tide
#

It's already instantiated, he does GetComponent to grab the reference as it's on the gameobject

#

When inserted onto the gameobject, it's basically doing new()

formal escarp
#

ooohhh

digital cave
formal escarp
#

now i get it.. thanks mao.

digital cave
#

If I understood it right

wintry quarry
eternal needle
#

that tutorial calling that parameter name collision is definitely questionable, considering its just a collider

#

hitCollider.GetComponent would be way more understandable for beginners

formal escarp
eternal needle
#

i have no clue what you mean by that, and dont really wanna know either

digital cave
eternal needle
dense root
#

What's the best way to delay the response for a few seconds so the player can actually read the correct response being told?

    void CheckAnswer(int index)
    {
        if (answerText[index].text == answerKey[hiraganaArray[0]])
        {
            correctResponse.text = "Correct";
            ExitBattle();
        }
        else
        {
            correctResponse.text = "Wrong";
        }
    }
polar acorn
#

Coroutine

fickle wagon
#

Is it possible to move an object with the speed of light? As time froze and mass became infinite.

night mural
#

only if you want it to come out at a different point in time

digital cave
ripe forge
#

main advantage of tasks/async as well as reactive extensions is, they're not tied to monobehaviours, so you can run your delays in plain c# scripts. StartCoroutine is a function tied to monobehaviour, so you either need to derive your class from it, pass one around or run it against a static reference somewhere

#

but they also have their pitfalls, cancellation needs more boilerplate and if you're not careful it does not propagate exceptions

night mural
#

or just...keep track of a timer and then you can modify the amount left really easily and it's very simple and clear

cyan folio
#

@summer stump ```cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FollowPlayer : MonoBehaviour
{
public GameObject player;
private Vector3 offset = new Vector3(0, 120, -120);

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void LateUpdate()
{
    transform.position = player.transform.position + offset;
}

}```

eternal needle
#

this doesnt look like a code question

summer stump
cyan folio
summer stump
#

Y is up and Z is forward

X, Y, Z

#

When you put that script on the target before, what happened?

cyan folio
#

@summer stump Good news, I fixed the coordinates and can now see the sphere. The bad news is that the ground is being clipped for some reason.

charred spoke
summer stump
cyan folio
#

@summer stump Good news, I fixed the coordinates and can now see the sphere. The bad news is that the ground is being clipped for some reason.

summer stump
#

Did you see my previous response?

Try reducing the near clip plane

cyan folio
summer stump
cyan folio
spare mountain
#

@cyan folio does the ground reappear with a faraway camera?

#

also is this an orthographic camera?

cyan folio
spare mountain
#

just move your camera or move your plane

keen parcel
#

How can I make a loop that has a delay between outputs

spare mountain
#

I thought this was the blender server 🙀

#

myb

gleaming ember
#

quick question i work throu a tutorial and he just set linear drag on 0 so gravaty works but my player (sqare) just drop down very slowly can someone explain to me why and how to fix?

gleaming ember
#

idk but i thought its definitly a beginner problem 😅 but yes if you want me to ask somewhere else

#

is its editor extentions or input system ?

summer stump
#

This likely IS a code question

#

Are you setting velocity in your movment code?

#

If so, are you passing 0 as the y component?

gleaming ember
summer stump
summer stump
# gleaming ember yes

If your vertical input is 0, then you are setting y velocity to 0. Thus you fall slowly

gleaming ember
#

my vertical input is then 0 when i dont press a key isnt it? but in the tutorial they wrote the same Code (more or less he didnt add a vertical factor) so is that my misstake?

summer stump
# gleaming ember my vertical input is then 0 when i dont press a key isnt it? but in the tutorial...

my vertical input is then 0 when i dont press a key isnt it?
Correct

but in the tutorial they wrote the same Code (more or less he didnt add a vertical factor) so is that my misstake?
Not sure how they did it. Adding the factor shouldn't be the issue. When there is no input, you are repeatedly setting the vertical velocity to 0, which logically is an issue. Because moving down at just over 0 m/s (because you WILL still fall a little until you reset it each frame) is a lot less than 9.81 m/s

Sorry to run out btw. But I'm just heading to bed. Hope that makes sense

gleaming ember
#

ok yes just checkt his code again he add a code i didnt add that could fix this thanks alot

signal cosmos
#

,,daca cineva lucreaza la midnightworks dati-mi un raspuns''

rich adder
signal cosmos
#

Please leave the message, it's dedicated :))

rich adder
#

if anyone works at midnightworks, give me an answer

#

ok?

eternal needle
#

not even a code question, what an odd place to post that

rich adder
#

u think someone from midnightworks will casually see this here wtf

signal cosmos
rich adder
signal cosmos
#

I want to catch someone who claims they're always on this chat and reads all the messages

rich adder
#

they come up as a scam publisher so now idea why you'd want to

signal cosmos
rich adder
#

anyway not code related so time to move on

signal cosmos
#

Honestly, I didn't have a super-defined goal, I just wanted to test a person who always claims to be on this chat and works there

#

Anyway, let's forget about this topic; indeed, it was absurd

acoustic grove
#

hi, does anyone know why I can access a gameobject inside start and fixedupdate but not in a new method?

astral falcon
acoustic grove
#

well when i try to access it from a new method, it says null reference

#

with the exact same code

rich adder
zinc shuttle
#

gyroscope keeps changing its direction
somtimes it works, somtimes zaxis is 90degree fliped, somtimes its inverted.
how do i solve this

acoustic grove
#

(i was looping through the components cause I was at my wits end, but the component does exist and is attached)

green ether
#

which line is Player:231

acoustic grove
#

obj.HandlePhaseAdvance();

green ether
#

Is there a reason you are getting the component like that?

#

GetComponent<PlayerAgent>().HandlePhaseAdvance();
will do the same as all the code above no?

acoustic grove
#

I was losing my mind wondering if it was even attached so I was looping

#

but yes, it will do the same, but currently it also gives a null reference

rich adder
#

why not just assign in inspector

acoustic grove
#

like I can access it in start() and fixed update()

#

because its just a script thats attached to my player

#

I tried in the GUI and it still threw the same error

rich adder
#

why are you looping through components like that

acoustic grove
#

because I was worried it wasnt attached so I wanted to check that it was

#

but I cant access it directly either

astral falcon
#

So your obj is null, did I get this right?

acoustic grove
#

in start, both the loop and direct access work, in my new method, neither works

rich adder
#

use TryGetComponent at minimum
but fix the object being null in the first place

acoustic grove
#

yes my obj is null

#

well thats the thing

#

its not null in start

astral falcon
rich adder
acoustic grove
#

well yeah

#

thats why im asking

#

is ther a difference

astral falcon
#

Are you destroying it?

acoustic grove
#

between fixedupdate and methjods outside

#

no

astral falcon
#

no

#

no difference at all. if the object is gone, you are destroying it or overriding it with a null value

acoustic grove
rich adder
astral falcon
#

What is PlayerAgent? Can you show the script?

acoustic grove
#

yes sorry

eternal needle
#

!code

eternal falconBOT
rich adder
#

where is obj assigned though

acoustic grove
#

I was assigning obj with getcomponent<PlayerAgent>()

#

in start()

burnt vapor
# acoustic grove

FYI, SerializeField has no effect on fields that are already public. It is for private fields.

acoustic grove
#

thanks, I didnt write this haha

#

I didnt write the actual game code, Im trying to put an ml agent in it

rich adder
acoustic grove
#

someone asked for PlayerAgent

eternal needle
astral falcon
acoustic grove
#

no, its not a real game,dont woryr

rich adder
green ether
rich adder
#

not your own project

green ether
#

ah

#

got me cofused for a second

rich adder
#

its literally null

acoustic grove
#

it's a script thats attached to the playerobject

rich adder
rich adder
#

type what i wrote on the search bar of hierarchy

eternal needle
# green ether Modding is against server rules??

what navarone said, but also generally people dont help with it here. its a pain because the person usually has no clue what they're doing and cant even show if other things are affecting what their issue is.

acoustic grove
rich adder
#

obviously

#

I said check for 2 of them

acoustic grove
#

oh

#

yes

#

I only have 1

rich adder
#

show the entire inspector for object Player script is on

acoustic grove
rich adder
acoustic grove
#

yes

rich adder
# acoustic grove yes

put this in Start

//Start()
obj = gameObject.GetComponent<PlayerAgent>();
Debug.Log($"Found " + obj, gameObject);

//UpdatePhase
Debug.Log($"using obj " + obj, gameObject);
obj.HandlePhaseAdvance();
Debug.Log($"used obj " + obj, gameObject);
#

put these two logs

acoustic grove
rich adder
acoustic grove
rich adder
#

try make the reference of obj private see if anything changes

#

maybe you have another script setting it

acoustic grove
#

same thing sadly

#

I think it's something to do with the ml-agents plugin but I dont know enough about it

astral falcon
acoustic grove
#

It's definitely not getting destroyed because the other functions inside it are being called

#

I put it in the ondestroy and it only got called when I stopped the game

astral falcon
#

Can you show the result for all references of obj?

acoustic grove
#

is that in the code or gui?

astral falcon
#

in your IDE, visual studio for example

#

right click on obj and find all references

acoustic grove
#

5 references, 1 asset reference

astral falcon
#

Check those places. Does any of those set a new obj somewhere?

green ether
#

Have you tried turning it off and on again?