Can a Class blueprint remember it's the first in the level?

here’s is what I am Trying to do.
1.Place a blueprint object in a level and, if it’s the first of its type, Have it be special (change it’s color, switch it’s mesh, or otherwise be different)
2.Place another instance of the same blueprint. see it’s not the first. and change nothing.
3.For the first blueprint have it REMEMBER IT WAS FIRST,EVEN AFTER I CHANGE IT’S PROPERTIES
4.have all these features contained within the class blueprint if at all possible.

I’ve gotten everything but step 3 and 4 to work.
Setting up a DoOnce didn’t work, and neither did setting a boolean up at the end and beginning to see if it’s been executed. I presume neither work because every time a property is changed, all those values aren’t persistent

.

See attached image for clarification.

A few tips:

  • For Do-Once, remember: each instance of a class has it’s own instance of that Do-Once. Do Once is "per-object’, not “per entire game for all objects”. If you want the latter, then you want to have the Do-Once logic happen on something like the game-mode or another over-arching class, where you know fthere would only be a single instance of the class.
  • Blueprint construction scripts are rerun every time a new object is placed, but no other logic happens while in the editor unless you simulate the game. There might be a way to stop that, but I don’t know what it is.

There’s no mechanism that I know of to determine what was placed in the editor WHEN (other than the Undo stack) …and while I don’t want to sound negative, it’s probably very bad design to base any major game play decisions on the order in which objects are placed in the editor. What happens if you want to delete that object and place a “new” first object? Does that mean you have to delete ALL of those objects and replace them? What happens if you decide you want to make something else be “first” and not the original instance?

What you seem to be looking for is basically a way to order objects/assign priority. If you want a deliberate order to a series of objects there are a lot options:
–manually setting that order via an editable variable on each instance (a bool flag, an int/byte number, an enum…heck, even a tag would work) and then you sort those into the order you want via logic in an overarching class (like game mode).
–OR…you author a controlling manager class that spawns things where you want in a deliberate order, at runtime, and then that logic can determine what was spawned “first”.
–OR, you can subclass and spawn unique versions of things–so placing only one instance of a subclass of an object, and all other placed types are a different subclass, etc.

There are a lot of ways to solve this sort of problem, it just depends on what your goals are.