Widget instances all using the same data?

I have some gaps in what seems like some basic knowledge concerning widgets and instancing. I have spent a lot of time hammering away at this, and tried many combinations of search terms and can’t quite figure out what I’m missing.

I have an object that I have presenting as an index card in-game. For components, it contains a static mesh (the card) and a widget (to display text and images on the card). This much is working, albeit a little odd-looking since I can’t figure out how to flatten the widget back against the mesh. I’m aware there is a way to project an image of the widget onto the card as a texture, which I’d love to do eventually, but I digress!

The object class itself is a C++ class, which I converted to a blueprint as I could not for the life of me figure out how to spawn more of the object that also contains a mesh and widget - again, something I’m sure is a lot more simple than my efforts would make it seem, and the fact that converting it into a blueprint took care of this particular issue tells me I’m missing something obvious (or maybe is a source of my problem!). The widget reads the variables generated by the C++ class without issue.

The level blueprint spawns 20 of these cards. Inspecting the individual cards shows that they all contain their own randomly-generated data, but each of their widgets is displaying the exact same things - the data from the first card. I assume this means the widgets are not actually being instanced and are all just copies of, or references to, the first and hence are all referencing the first card, but I can’t figure out why.

I suppose the core of the question is, how do I ensure that all the components of a given instanced object are using that instance of the object as their data source?

I’m also wide open to any suggestions as to how to go about this in a much more efficient or practical way. This is literally the first thing I’ve created in this particular project, so scrapping it wouldn’t be terribly painful.

So I made an actor BP, and put a widget component in it. I can set the text on the component using a variable which I can set on the instance, like this:

Is that the kind of thing you mean?

2 Likes

I think so, though what I’ve done appears to maybe be the inverse? I used bind functions within the widget blueprint for each individual field, like so:

And when the level spawns the row of cards, this happens:


Notice the attributes on the right panel. Each card’s set is randomly generating properly, but it looks like each card’s widget is using the first card’s data.

If all I have to do to prevent this is do it your way, heck, I’ll do it. I’m still stumped as to why this is happening in the first place, though.

1 Like

Your problem there, is you don’t know which blueprint to bind to. That’s why I did it the other way around… :wink:

You’re using GetActor, which will always give you back the first actor of that type placed in the level. Hence they all have the same details.

1 Like

Aha! That one little detail just made everything click in my brain. Thank you very much!

1 Like

Hello, can multiple 3Dwidget Actors (instances) be created through SpawnActor? Can the variables in each instance be independently modified through data?



I was having the same problem. I’m trying to understand what you did here. Can you please show more on what you did here? I think I’m doing something wrong on mine because it is still showing the same data from the first

You just can’t use ‘get actor of class’ if you have more than one actor of that class.

1 Like

Never mind I got it. I simply spelt something wrong… lol… Thanks

1 Like