GVKun编程网logo

Unity Shop System 如何解决AddListener脚本(unity的addlistener)

5

本篇文章给大家谈谈UnityShopSystem如何解决AddListener脚本,以及unity的addlistener的知识点,同时本文还将给你拓展addListener()和addCallbac

本篇文章给大家谈谈Unity Shop System 如何解决AddListener脚本,以及unity的addlistener的知识点,同时本文还将给你拓展addListener()和addCallback()与ListenableFuture之间的区别、addOnFailureListener 如何在 FusedLocationProviderClient 中工作以及为什么 addOnSuccessListener 不起作用?、Android Spinner删除OnItemSelectedListener、android – OnItemClickListener和Custom OnTouchListener等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Unity Shop System 如何解决AddListener脚本(unity的addlistener)

Unity Shop System 如何解决AddListener脚本(unity的addlistener)

如何解决Unity Shop System 如何解决AddListener脚本?

我正在尝试统一构建一个商店系统,但我对 AddListener 有疑问。我无法理解 addlistener 代码。这是我的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class SkinChangeButton : MonoBehavIoUr{
private SkinSpawner skinSpawner;

   [System.Obsolete]



void MarketiCagir()
{

    for (int i = 0; i < skinSpawner.items.Count; i++)
    {
        GameObject cogalanslot = Instantiate(skinSpawner.Slot,transform);
        cogalanslot.transform.FindChild("Character_Image").GetComponent<Image>().sprite = skinSpawner.items[i].Resim;
        cogalanslot.transform.Find("Purchase_Button").transform.Find("Price_Text").GetComponent<TextMeshProUGUI>().text = skinSpawner.items[i].Fiyat.ToString();
        cogalanslot.transform.Find("Character_FunInfo").GetComponent<TextMeshProUGUI>().text = skinSpawner.items[i].FunInfo.ToString();
        bool gecicibool = skinSpawner.items[i].Alinmadurum;
        int gecici = i;
        cogalanslot.transform.Find("Purchase_Button").GetComponent<Button>().onClick.AddListener(() => Buy(gecici,cogalanslot,gecicibool));
        cogalanslot.transform.Find("Purchase_Button").GetComponent<Button>().onClick.AddListener(() => SkinChangingReal(gecici,gecicibool));




    }
}
public void SkinChange()
{

    for (int i = 0; i < skinSpawner.items.Count; i++)
    {
        GameObject cogalanslot = Instantiate(skinSpawner.Slot,transform);

        bool gecicibool = skinSpawner.items[i].Alinmadurum;
        int gecici = i;
        SkinChangingReal(gecici);



    }
}
public void Buy(int id,GameObject obje,bool AlinmaDurum)
{
    skinSpawner.Para = PlayerPrefs.GetInt("StarCoin",0);
    if (skinSpawner.Para >= skinSpawner.items[id].Fiyat)
    {


        obje.transform.Find("Purchase_Button").gameObject.SetActive(false);
        skinSpawner.Para -= skinSpawner.items[id].Fiyat;

        skinSpawner.items[id].Alinmadurum = true;


    }

}
public void SkinChangingReal(int id)
{
   

    if (skinSpawner.items[id].Alinmadurum)
    {
        skinSpawner.Player.sprite = skinSpawner.items[id].Resim;

    }

}

}

enter image description here

我正在尝试使用滚动 rect 制作商店,我不应该使用 addlistener 脚本吗?还有其他方法可以解决这个问题吗?我怎么解决这个问题?谢谢:)

解决方法

您的 q=''Example brand" -> Found q=''bra" -> Found q=''xam'' -> Found q=''Exmple'' -> *NOT FOUND* 方法接受一个参数,但您在此处使用 3 个参数调用它:

SkinChangingReal(int id)

addListener()和addCallback()与ListenableFuture之间的区别

addListener()和addCallback()与ListenableFuture之间的区别

区别在于,对于addListener,您提供Runnable;对于addCallback,您提供FutureCallbackRunnable未提供结果,因此,如果需要它,则必须付出额外的努力。

简而言之,如果要使用Future的结果,请使用addCallback,否则请使用addListener

addOnFailureListener 如何在 FusedLocationProviderClient 中工作以及为什么 addOnSuccessListener 不起作用?

addOnFailureListener 如何在 FusedLocationProviderClient 中工作以及为什么 addOnSuccessListener 不起作用?

如何解决addOnFailureListener 如何在 FusedLocationProviderClient 中工作以及为什么 addOnSuccessListener 不起作用??

我需要获取上次定位电话,但我不明白为什么它不起作用。这是我的代码,你能告诉我我做错了什么吗。

private lateinit var fusedLocationClient: FusedLocationProviderClient

var lastLocation: Location? = null
fusedLocationClient = LocationServices.getFusedLocationProviderClient(context)
if (ActivityCompat.checkSelfPermission(
                context,Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                context,Manifest.permission.ACCESS_COARSE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
           fusedLocationClient.flushLocations()
            fusedLocationClient.lastLocation.addOnSuccessListener {
                listener -> lastLocation = listener
     
            }.addOnFailureListener{
                
            }

解决方法

如果条件允许,将代码移出

fusedLocationClient.flushLocations()
            fusedLocationClient.lastLocation.addOnSuccessListener {
                listener -> lastLocation = listener
     
            }.addOnFailureListener{
                
            }  
  • 通过设备或模拟器中的应用信息检查位置权限
  • 检查设备中的启用位置
  • 打开谷歌地图保存位置

Android Spinner删除OnItemSelectedListener

Android Spinner删除OnItemSelectedListener

其他人有问题,因为不工作,我有问题它工作(它不应该)

我有一个数据模型,它被保存,需要加载回GUI,Activity.它有一些微调值.

数据放置在一个公共可访问类,一个引用持有者.

活动的onCreate它将检查是否处于编辑模式:

editMode = getIntent().getBooleanExtra(EDIT_MODE_KEY,false);

它将从xml加载UI元素,并开始选择,填充值.
在编辑模式下,在创建模式下,它应该选择具有数据模型的值.
在运行时(在onResume()之后)有一些工作流:是在spinner1中选择了什么,而不是刷新spinner2适配器内容等等.

它不适用于普通的.setSelection(positiontoSelect);所以我添加了一个延迟的帖子,现在正在工作.

我的问题是:我想删除临时选择监听器,调用选择并添加回监听器.

这是代码,应该修改:

if (editedTimezonePosition > -1) {                        
                final int positiontoSelect = editedTimezonePosition;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        OnItemSelectedListener listener = spSelectTimezone.getonItemSelectedListener();
                        spSelectTimezone.setonItemSelectedListener(null);
                        spSelectTimezone.setSelection(positiontoSelect);
                        spSelectTimezone.setonItemSelectedListener(listener);                   
                    }
                },250);            
            }

将侦听器设置为null无效:我正在回调我的侦听器方法.

如果您有任何想法如何解决,请分享!

解决方法

您可以在onItemSelected方法中放置一个计数器变量.如果它为0(意味着第一次调用该方法),除了增加变量外什么都不做.如果它大于0,则执行其余代码.

private int mSpinnerSelectionCount=0;

public void onItemSelected(AdapterView<?> parent,View view,int pos,long id) {
        if(mSpinnerSelectionCount == 0){
            mSpinnerSelectionCount++;
        } else {
            // Your normal selection code here
        }    
    }

android – OnItemClickListener和Custom OnTouchListener

android – OnItemClickListener和Custom OnTouchListener

我有一个列表视图列表,我想点击它,并触发OnItemClickListener.虽然我同时希望能够刷每个视图并进行自定义操作.这意味着我必须在ArrayAdapter中为每个视图创建自己的OnTouchEvent.

有没有办法让两个人一起工作,这样我就可以进行自定义操作,例如刷一个项目并轻松点击该项目

解决方法

这非常类似于 Android Recent Activities的处理方式 – 您知道,它们会显示所有最近打开的应用程序的列表,可以刷卡以删除或点击打开.看看他们的代码,我想你会得到一个很好的主意: https://github.com/android/platform_frameworks_base/tree/master/packages/SystemUI/src/com/android/systemui/recent

今天的关于Unity Shop System 如何解决AddListener脚本unity的addlistener的分享已经结束,谢谢您的关注,如果想了解更多关于addListener()和addCallback()与ListenableFuture之间的区别、addOnFailureListener 如何在 FusedLocationProviderClient 中工作以及为什么 addOnSuccessListener 不起作用?、Android Spinner删除OnItemSelectedListener、android – OnItemClickListener和Custom OnTouchListener的相关知识,请在本站进行查询。

本文标签: