主頁 > 後端開發 > 我正在嘗試從另一個物件串列分配和輸出到控制臺字串串列。但它繼續復制字串

我正在嘗試從另一個物件串列分配和輸出到控制臺字串串列。但它繼續復制字串

2021-11-16 21:29:52 後端開發

我正在嘗試將誘餌串列分配給 fish 物件串列中的 Fish 物件并輸出到 console 。但無論如何它都會繼續隨機復制字串(誘餌)。我真的找不到修復它的方法。邏輯上它必須作業>_>

邏輯:

  • 從陣列中生成 3 條帶有名稱的魚,并將它們添加到生成的魚串列中。
  • 將基于魚名的誘餌串列分配給新創建的魚。
  • 通過 Debug.Log 在控制臺中輸出它(我正在使用 Unity)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    List<Fish> generatedFish;
    string fishName;
    string[] fishNames = {"Karas", "Karp", "Ploc" };
    List<string> asignedLures;

    // Start is called before the first frame update
    void Start()
    {
        generatedFish = new List<Fish>();
   

        generateFish();
       
        foreach(Fish fish in generatedFish)
        {
            Debug.Log(fish.fishName);
            foreach(string lure in asignedLures)
            {
                Debug.Log(lure);
            }
        }
        
    }
    class Fish
    {
        public string fishName { get; set; }
        public List<string> lures { get; set; }
    }
    public void generateFish()
    {
        int numberOfGeneratedFish = 2;

        for(int i = 0; i <= numberOfGeneratedFish; i  )
        {
            generatedFish.Add(new Fish
            {
                fishName = AsignName(),
                lures = AsignLure(fishName)
            });
        }

    }
    public string AsignName()
    {
        fishName = fishNames[Random.Range(0, fishNames.Length)];
        return fishName;
    }
    public List<string> AsignLure(string fishName)
    {
        

        switch (fishName) {
            case "Karas":
                asignedLures = new List<string> {"corn", "dough", "worms" };
                break;
            case "Karp":
                asignedLures = new List<string> { "potato", "corn", "pea" };
                break;
            case "Ploc":
                asignedLures = new List<string> { "perlovka", "mastique" };
                break;
        }
        return asignedLures;
    }
}

Code generates Fish and output them in console. But in outputs wrong lure list. Also it always same for all fishes, but differs every run. Like this time all fish will have "potato", "corn", "pea". But another time it'll have "corn", "dough", "worms".

Help me to fix it please T_T. I find nothing similar in internet.

uj5u.com熱心網友回復:

那么你替換的內容asignedLures當然會是每次迭代的相同串列

我認為您更愿意訪問存盤在您的Fish實體中的串列

foreach(var fish in generatedFish)
{
    Debug.Log(fish.fishName);
    foreach(var lure in fish.lures)
    { 
        Debug.Log(lure);
    }
}

實際上,我根本看不到擁有該assignedLure領域的理由

我寧愿簡單地直接回傳串列,例如

public List<string> GetLureByName(string fishName)
{
    switch (fishName)
    {
        case "Karas":
            return new List<string> {"corn", "dough", "worms" };
       
        case "Karp":
            return new List<string> { "potato", "corn", "pea" };
         
        case "Ploc":
            return new List<string> { "perlovka", "mastique" };
    }

    // Depending on whether you want to actively handle the exception/that case either 
    return null;

    // Or if you want a "valid" return list but simply empty
    return new List<string>();
}

同樣也為

public string GetRandomName()
{
    return fishNames[Random.Range(0, fishNames.Length)];
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/357435.html

標籤:c# list class unity3d foreach

上一篇:你能把Python類的屬性設定為一個空的類物件嗎?

下一篇:返回列表

標籤雲
其他(129615) Python(17368) Java(14098) JavaScript(10172) C(8942) 區塊鏈(7786) AI(6541) 基礎類(6313) 腳本語言(PerlPython)(5129) 非技術區(4971) MySQL(4525) Android(4143) Linux(3664) C語言(3288) C++語言(3117) Java相關(2746) 疑難問題(2699) PHP(2615) 單片機工控(2479) Web開發(1951) 網絡通信(1793) 數據庫相關(1767) VB基礎類(1755) 爪哇(1652) 開發(1646) C#(1633) 系統維護與使用區(1617) .NETCore(1616) ASP.NET(1613) 基礎和管理(1579) JavaEE(1566) C++(1552) 專題技術討論區(1515) Windows客戶端使用(1484) HtmlCss(1481) html(1461) VBA(1385) sql(1380) Unity3D(1358) VCL組件開發及應用(1353) R(1347) .NET技术(1254) 数组(1223) HTML(CSS)(1220) 其他技術討論專區(1200) WindowsServer(1194) 熊猫(1171) 交換及路由技術(1149) Qt(1143) 語言基礎算法系統設計(1133) WindowsSDKAPI(1124) 界面(1100) JavaSE(1075) 反应(1039) 新手樂園(1016) iOS(1003) 其他開發語言(947) Go(924) HTML5(901) 新技術前沿(898)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 我正在嘗試從另一個物件串列分配和輸出到控制臺字串串列。但它繼

    我正在嘗試將誘餌串列分配給 fish 物件串列中的 Fish 物件并輸出到 console 。但無論如何它都會繼續隨機復制字串(誘餌)。我真的找不到修復它的方法。邏輯上它必須作業>_>邏輯...

    uj5u.com 2021-11-16 21:29:52 more
  • 你能把Python類的屬性設定為一個空的類物件嗎?

    我有一個玩家類和一個武器類。武器類有一個 reload 方法,用于檢查玩家的庫存屬性。玩家類有一個武器屬性,用于保存當前的武器物件,從中呼叫 reload 方法。由于玩家可以更換武器...

    uj5u.com 2021-11-16 21:29:17 more
  • 如何將使用image_ocr和cat創建的向量轉換為允許我在R中使用正則

    我已經使用image_read(從magick包中)讀取了兩個 .jpg 檔案,然后使用cat和image_ocr從兩者中提取文本并將它們組合成一個回傳。這確實回傳了文本,但是有很多錯誤需要使用正則運算...

    uj5u.com 2021-11-16 21:28:33 more
  • 在Cuda內核中使用C 物件和類成員

    我是 C 的新手,尤其是 Cuda 計算工具。我正在嘗試使用 Cuda 在 GPU 上并行化我的代碼,為了我的目的,必須能夠從類創建物件或至少從內核呼叫它們的成員。首先這里是我的類的定...

    uj5u.com 2021-11-16 21:27:48 more
  • 將所有類變數添加到串列中

    我想將使用items該類的所有變數添加到串列中,而無需在每次創建新專案時手動將每個專案添加到串列中。例如itemsList = [flower, wood, iron, sticks]flower = items(red, "fl...

    uj5u.com 2021-11-16 21:27:13 more
  • 在ARMCortex-A72CPU中,回圈執行所需的周期比預期的多

    考慮以下在 ARM Cortex-A72 處理器上運行的代碼(此處為優化指南)。我已經包括了我期望的每個執行埠的資源壓力:操作說明乙0I1米升秒F0F1.LBB0_1:ldr q3, [x1], #160.50.51l...

    uj5u.com 2021-11-16 17:34:03 more
  • MSP430中的進位標志混淆

    "mov #10,r5\n" "sub #1,r5\n" //test value我在硬體中運行,當'sub' exec 時,Carry 標志被設定。為什么?在此處輸入圖片說明
    uj5u.com熱心網友回復:進行減法時,進位標志與加法...

    uj5u.com 2021-11-16 17:32:28 more
  • 如何在程式集x86中跳過字串開頭的空格

    我應該寫什么回圈 如果我想跳過字串開頭的所有空格并在我的代碼到達字串的第一個符號時開始對字串執行某些操作。如果我有一個像a=' s o m e word'代碼應該在到達 's...

    uj5u.com 2021-11-16 17:31:26 more
  • 在C 代碼的VS反匯編中,“dwordptr[this]”是什么意思?

    在呼叫物件的成員函式之前,會將物件的地址移動到 ECX。在函式里面,ECX會被移到dword ptr [this],這是什么意思?C 源代碼#include <iostream>class CAdd {public: CAdd(int...

    uj5u.com 2021-11-16 17:30:52 more
  • 匯編跳轉后是否清除比較標志?

    一個基本問題,但我很難找到答案。在匯編中,不管是哪一個,用于執行的標志JE, JNE, JL, JG, JLE, JGE通常在跳轉完成后都清除嗎?
    uj5u.com熱心網友回復:條件跳轉指令不設定標志。因...

    uj5u.com 2021-11-16 17:30:16 more