Building a Shader Switch | How to get custom values from individual objects? I'm trying to build a shader-switch to easily switch the texture out of a set of ten different images. I want to use a single material for a set of picture frames. This is what I've got so far:

The node-group switches ten inputs using an input value between 0 and 1. 

Problem: I can't change the input in the shader-node-editor, because all of my object would be updated. 
I can use the object-info-node to drive the channel with the random value, but this way I don't have control about the image.



There are already a lot of discussions about this topic, but most of the answers suggest to use drivers. In my case I have multiple objects. So I can't use one driver. 

My idea is to read a custom property. A value between 0 an 1. But how can I access such a value in the node editor without using drivers.

Is there a way to use "self" in the driver menu? What kind of object is "self" in a shader-context? Can I somehow reference a custom property this way?

See this comment: Drivers: How to access &quot;self&quot;?



Do you have any tips? 
Thanks in advance!
You do not need a custom property. You can use Object Index: 



It might also be anoying to go through all the objects and assign different numbers to each, so you could use a very simple Python script to do that for all objects that you have seleceted:

 import bpy 

 for i,o in enumerate(bpy.context.selected_objects):
     o.pass_index = i 


Add something to i if you wish to start counting from a higher number if you have some indices set already.