The items the player can buy will vary depending on the level of the player, so it will check the condition of the player's level script and if it's true, using a boolean will unlock it.
You chould create a class describing an item in the store. Each item has a "minimumlevel" variable. The item should also know how to render itself when it is disabled and when it is enabled, and it's enabled when players level >= minimum level. You could pass in the player info to the store, which pass in the player level to each item. I am envisioning myself the store as having a GUI script, and a List of store items. Each store item contains code to just draw its own GUI item. That way the store can just simply tell each item to draw when it goes through its array. These store items could also have useful data such as price, or maybe you pull that out from some referenced script.
When an item is clicked, a callback can be sent back to the player saying "You bought this item" or "You tried purchasing this item but are not of sufficient level" or "You tried purchasing this item but are out of funds". Maybe implement them as function OnMarket(evt : MarketEvent)
.
I need a way to set it up so that items can be added and viewed in the inspector using something like an array or list
It sounds like you want to create your own Editor script. If you override OnInspectorGUI, you can make a custom GUI for your inspector and handle each item in a much more richer sense since you get full control. You could also define a new ScriptableObject which describe "a set of store items" that can be used in shops. That way you can easily trade one set of items for a shop keeper to another set of items. For example, a jeweler maybe doesn't want to sell swords and axes, or another region maybe sell power level weapons, in that region only. You could make an inspector for your scriptable type as well.