0
\$\begingroup\$

I am creating a 3D game in Unity. The main game mechanic involves a large open world area. In various places throughout this world are billboards and other devices that would show 'adverts' etc in the game.

I have several textures that I would wish to place on these billboards. The game would select a texture at random and display it for a set period of time on the surface, before choosing another - giving a similar effect to billboards in the real world. Another implementation of this could perhaps involve adverts being embedded into the game world in this way.

What is the way about this? Any help would be gratefully appreciated.

\$\endgroup\$
2
  • \$\begingroup\$ Why not just do exactly what you say -- put textures onto the billboards and swap textures from time to time? What precisely is the problem, here? \$\endgroup\$ May 15, 2014 at 5:18
  • \$\begingroup\$ @TrevorPowell I am trying to find away to do the process automatically, without having to manually place textures. \$\endgroup\$
    – A A
    May 15, 2014 at 16:21

1 Answer 1

1
\$\begingroup\$

Create a texture atlas. You can do this either manually or using tools.

Once you've done so, assuming that the ads are all the same size, all you need to do is shift the UV positions, and voila, you are looking at a different ad on that billboard. This is a more efficient solution than switching textures.

\$\endgroup\$
1
  • \$\begingroup\$ If the textures are changing infrequently (ie. they stay the same for many seconds, rather than changing per frame) and you only ever see a small number of billboards at a time, then the situation can be reversed. In such a context, it may be preferable to pay a draw call per billboard on screen rather than clog texture memory/bandwidth with an atlas mostly full of adverts that aren't being displayed anywhere. Particularly if the total number of adverts and the resolution of each is large. \$\endgroup\$
    – DMGregory
    May 14, 2014 at 18:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .