/// <summary>
        /// 显示物品。
        /// </summary>
        /// <param name="itemId">物品编号。</param>
        /// <param name="itemAssetName">物品资源名称。</param>
        /// <param name="itemGroupName">物品组名称。</param>
        /// <param name="priority">加载物品资源的优先级。</param>
        /// <param name="userData">用户自定义数据。</param>
        public void ShowItem(int itemId, string itemAssetName, string itemGroupName, int priority, object userData)
        {
            if (m_ResourceManager == null)
            {
                throw new GameFrameworkException("You must set resource manager first.");
            }

            if (m_ItemHelper == null)
            {
                throw new GameFrameworkException("You must set item helper first.");
            }

            if (string.IsNullOrEmpty(itemAssetName))
            {
                throw new GameFrameworkException("Item asset name is invalid.");
            }

            if (string.IsNullOrEmpty(itemGroupName))
            {
                throw new GameFrameworkException("Item group name is invalid.");
            }

            if (HasItem(itemId))
            {
                throw new GameFrameworkException(Utility.Text.Format("Item id '{0}' is already exist.", itemId.ToString()));
            }

            if (IsLoadingItem(itemId))
            {
                throw new GameFrameworkException(Utility.Text.Format("Item '{0}' is already being loaded.", itemId.ToString()));
            }

            ItemGroup itemGroup = (ItemGroup)GetItemGroup(itemGroupName);

            if (itemGroup == null)
            {
                throw new GameFrameworkException(Utility.Text.Format("Item group '{0}' is not exist.", itemGroupName));
            }

            ItemInstanceObject itemInstanceObject = itemGroup.SpawnItemInstanceObject(itemAssetName);

            if (itemInstanceObject == null)
            {
                int serialId = ++m_Serial;
                m_ItemsBeingLoaded.Add(itemId, serialId);
                m_ResourceManager.LoadAsset(itemAssetName, priority, m_LoadAssetCallbacks, ShowItemInfo.Create(serialId, itemId, itemGroup, userData));
                return;
            }

            InternalShowItem(itemId, itemAssetName, itemGroup, itemInstanceObject.Target, false, 0f, userData);
        }