The most common way to "Encrypt" Data used for Game Assets is to use an
A) Custom File Format
B) Package into a Custom Compressed File
I mean the easiest approach is to use Standard Formats., but merely have an Encryption (on Data Block) Pass.
So for example Overwatch (or any Blizzard Game) use a VERY well documented format., but each update they use a new Encryption Key... so all of the Data Headers are always Readable., but the actual Data is using said new Encryption Key as a base.
This tends to take a week or two for those of us who help maintain the Overwatch Tools, to Data Mine for Encryption Key and release it as part of an Update to allow the latest Patch Data to work with the Tools.
And as we have to resolve both the .Package (Cache CRC) Encryption AND the new Encryption for any New Files within said Packages., while keeping old keys for Files from previous Updates; over time obviously this can become quite effective without constant on-going work from Tool Developers.
As noted Overwatch we keep on-top of quite well., but if someone was to start from scratch for it today; you're looking at a Main Package Key that changes every 14 Days., then about 40 Keys for all the different assets; some of which we've still not figured out which specifically go to which assets., because not all files were updated in the same package and thus a secondary list always has to be kept to keep track with a lot of trial-and-error to resolve decryption issues that some tend to be missed as there are THOUSANDs of Files.
It somewhat depends how much effort you want to put in really.
An "Out of the Box" Solution can be quickly defeated., while more creative solutions can be difficult to maintain.
It's all about how much effort you want to put into such an approach and how much effort is really needed... I'd argue most games are NEVER going to be popular enough to put in much effort (if any) to protect said assets.
Just know ANY approach can and will be defeated by anyone who puts their mind to it.
Much like Anti-Piracy Measures; there's no such things as a "Perfect" Solution... you're just aiming for frustrating and time consuming enough that people give up on trying.