国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 制作登錄功能02-創(chuàng)建和鏈接數(shù)據(jù)庫(SQlite)

這篇具有很好參考價(jià)值的文章主要介紹了Unity 制作登錄功能02-創(chuàng)建和鏈接數(shù)據(jù)庫(SQlite)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

國際慣例:先看效果

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

1.SQlite是一種嵌入型數(shù)據(jù)庫

在Unity開發(fā)游戲時(shí)使用SQLite有多種原因,以下是其中一些主要原因:

  1. 嵌入式數(shù)據(jù)庫:SQLite是一個(gè)嵌入式數(shù)據(jù)庫引擎,這意味著它不需要單獨(dú)的服務(wù)器進(jìn)程。這使得使用SQLite非常方便,并且可以輕松地在不同的平臺(tái)和操作系統(tǒng)上使用。
  2. 易于使用:SQLite易于學(xué)習(xí)和使用,具有簡(jiǎn)潔的SQL語法和強(qiáng)大的功能。這使得開發(fā)者可以更快地構(gòu)建和部署游戲,同時(shí)減少了對(duì)復(fù)雜的數(shù)據(jù)庫系統(tǒng)的需求。
  3. 兼容性:SQLite具有跨平臺(tái)的兼容性,可以在Windows、Mac、Linux、Android和iOS等不同平臺(tái)上使用。這意味著使用SQLite可以減少游戲在不同平臺(tái)上的差異,提高游戲的一致性。
  4. 安全性:SQLite支持事務(wù)和數(shù)據(jù)完整性,這使得它成為一種安全的數(shù)據(jù)庫選擇。它還提供了加密選項(xiàng),可以保護(hù)存儲(chǔ)在數(shù)據(jù)庫中的敏感數(shù)據(jù)。
  5. 可擴(kuò)展性、移植:SQLite具有很好的可擴(kuò)展性,可以處理大量的數(shù)據(jù)和并發(fā)訪問。這意味著使用SQLite可以滿足游戲開發(fā)中的各種需求,包括存儲(chǔ)大量的游戲數(shù)據(jù)和處理高并發(fā)的用戶訪問。
  6. 開源和免費(fèi):SQLite是開源的,可以免費(fèi)使用和修改。此外,SQLite還具有很好的文檔和社區(qū)支持,可以幫助開發(fā)者解決遇到的問

2.如何在服務(wù)器或者本地計(jì)算機(jī)安裝SQLite?

SQLite Download Page?官網(wǎng)下載

根據(jù)操作系統(tǒng)下載

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

C盤創(chuàng)建文件夾,把下載的文件解壓放進(jìn)去

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

?sqlite3.def 只是為了支持本地計(jì)算機(jī)的CMD命令窗口可以訪問的文件

3.如何在Unity中使用SQLite?

創(chuàng)建文件夾 (自己命名,原則就是自己能找到)

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

在自己電腦上搜這兩個(gè)文件,復(fù)制到自己剛剛創(chuàng)建的文件夾Plugins?

  1. Mono.Data.Sqlite.dll

  2. sqlite3.dll

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

4.重啟VS, 引用程序集即可!using Mono.Data.Sqlite;

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

5.學(xué)習(xí)該程序集的第一個(gè)類SQLiteConnection

SQLiteConnection是.NET Framework中的一個(gè)類,它是ADO.NET用于與SQLite數(shù)據(jù)庫進(jìn)行交互的主要接口之一。通過這個(gè)類,你可以執(zhí)行SQL查詢,修改數(shù)據(jù)庫中的數(shù)據(jù),處理數(shù)據(jù)庫中的事務(wù)等等。

如果你需要使用SQLiteConnection,首先你需要確保你的項(xiàng)目已經(jīng)引入了正確的SQLite .NET 包。你可以通過NuGet來添加這個(gè)包。在Visual Studio中,右擊項(xiàng)目 -> "Manage NuGet Packages..." -> 搜索 "System.Data.SQLite" -> "Install"。

SQLiteConnection類的主要屬性和方法有:

  • ConnectionString:用于定義數(shù)據(jù)庫連接的字符串。
  • Open():打開數(shù)據(jù)庫連接。
  • Close():關(guān)閉數(shù)據(jù)庫連接。
  • Execute(SqlCommand command):執(zhí)行一個(gè)SQL命令并返回受影響的行數(shù)。
  • BeginTransaction():開始一個(gè)數(shù)據(jù)庫事務(wù)。
  • Commit():提交數(shù)據(jù)庫事務(wù)。
  • Rollback():回滾數(shù)據(jù)庫事務(wù)。

實(shí)戰(zhàn)案例:用戶注冊(cè)

用戶注冊(cè)并存儲(chǔ)賬號(hào)密碼到數(shù)據(jù)庫

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

?兩個(gè)腳本:

1.獲取用戶在UI界面輸入的賬號(hào)密碼字符串
2.創(chuàng)建一個(gè)數(shù)據(jù)鏈接SQLite!創(chuàng)建一個(gè)表!把獲取的賬號(hào)密碼插入數(shù)據(jù)庫!

場(chǎng)景搭建:

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

1.獲取用戶在UI界面輸入的賬號(hào)密碼字符串

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


public class UserLogin : MonoBehaviour
{
    // 該腳本獲取場(chǎng)景中輸入框組件2.獲取用戶輸入內(nèi)容 

    public TMP_InputField userInputFieldAccount;
    public TMP_InputField userInputFieldPassword;
    public GameObject inputkuang;



    public static string UserAccount;
    public static string UserPassword;
    void Start()
    {
        userInputFieldAccount.onEndEdit.AddListener(OnUserInputChanged);
        userInputFieldPassword = inputkuang.GetComponent<TMP_InputField>();
        userInputFieldPassword.onEndEdit.AddListener(OnUserInputPassword);
    }

    private void OnUserInputPassword(string password)
    {
        Debug.Log("用戶輸入的密碼是:" + password);
        UserPassword = password;
    }

    // Update is called once per frame

    private void OnUserInputChanged(string Account)
    {
        // 當(dāng)用戶輸入值發(fā)生改變時(shí)調(diào)用該方法
        Debug.Log("用戶輸入的注冊(cè):" + Account);
        UserAccount = Account;
    }
    public void Login()//該函數(shù)用來在外部登錄按鈕面板中觸發(fā)
    {
        Debug.Log("面板上的函數(shù)觸發(fā)成功,用戶點(diǎn)擊了注冊(cè)按鈕" + UserAccount + "  " + UserPassword);
        do
        {           
                ConnectDataSQL.GetUserInput(UserAccount, UserPassword);//調(diào)用另一個(gè)類的方法:插入數(shù)據(jù)庫并存儲(chǔ)
                Debug.Log("注冊(cè)成功");        
        } while (false);

    }
}

2.創(chuàng)建一個(gè)數(shù)據(jù)鏈接SQLite!創(chuàng)建一個(gè)表!把獲取的賬號(hào)密碼插入數(shù)據(jù)庫!

using UnityEngine;
using System.Data;
using Mono.Data.Sqlite;


public class ConnectDataSQL : MonoBehaviour
{

    private const string databaseName = "leoyang.db"; // 數(shù)據(jù)庫文件名稱
   static SqliteConnection MyConnectionDB;//創(chuàng)建一個(gè)數(shù)據(jù)庫鏈接事件對(duì)象

    string UserAccount;
    string UserPassword;
    private void Start()
    {
        // 定義數(shù)據(jù)庫連接字符串
        string connectionString = "URI=file:" + Application.dataPath + "/" + databaseName;

        // 創(chuàng)建數(shù)據(jù)庫連接
        //傳入創(chuàng)建或者訪問SQLITE數(shù)據(jù)庫的路徑
        MyConnectionDB = new SqliteConnection(connectionString);
        if (MyConnectionDB.State == ConnectionState.Closed)//檢測(cè)當(dāng)前數(shù)據(jù)庫鏈接狀態(tài)是否關(guān)閉
        {
            MyConnectionDB.Open();//打開數(shù)據(jù)庫
            Debug.Log("數(shù)據(jù)庫鏈接完畢已打開");
        }
        else
        {
            Debug.Log("數(shù)據(jù)庫連接失敗");
        }
        // 創(chuàng)建數(shù)據(jù)庫用戶表(如果不存在)
        CreateTable(MyConnectionDB);     
    }

    // 創(chuàng)建用戶表的方法
    private void CreateTable(SqliteConnection oneConnect)
    {
        string sqlCreateTable = "CREATE TABLE IF NOT EXISTS UserTable (" +
                                  "Id INTEGER PRIMARY KEY AUTOINCREMENT," +
                                  "Username TEXT NOT NULL," +
                                  "Password TEXT NOT NULL" +
                                  ");";
        SqliteCommand SQcommand = new SqliteCommand(sqlCreateTable, oneConnect);//數(shù)據(jù)庫創(chuàng)建命令
        SQcommand.ExecuteNonQuery();
        SQcommand.Dispose();
        SQcommand = null;
    }

    public static void GetUserInput(string UserAccount, string UserPassword)//用戶點(diǎn)擊注冊(cè)開始插入數(shù)據(jù)庫
    {
        if (UserPassword!=null&&UserAccount!=null)
        {
            InsertUser(UserAccount,UserPassword);
        }
    }
    // 插入用戶輸入的賬號(hào)和密碼的方法
    public static void InsertUser(string username, string password)
    {
        string sqlCreateTable = "INSERT INTO UserTable (Username, Password) VALUES (@Username, @Password)";
        if (MyConnectionDB.State != ConnectionState.Open)
        {
            MyConnectionDB.Open();
            Debug.Log("我為您重新打開了數(shù)據(jù)庫");
        }
        else
        {

            SqliteCommand Insertuser = new SqliteCommand(sqlCreateTable, MyConnectionDB);
            Insertuser.Parameters.AddWithValue("@Username", username);
            Insertuser.Parameters.AddWithValue("@Password", password);
            //在 try 塊中的代碼執(zhí)行期間,如果發(fā)生了異常,則會(huì)跳過后續(xù)的代碼,并進(jìn)入與異常類型匹配的 catch 塊中進(jìn)行處理。如果異常類型沒有與任何 catch 塊匹配,那么將會(huì)跳過所有的 catch 塊,但仍然可以選擇執(zhí)行 finally 塊。
            try
            {
                Insertuser.ExecuteNonQuery();
                Debug.Log("插入注冊(cè)成功.");
            }
            catch (SqliteException yichang)
            {
                Debug.LogError("插入注冊(cè)失敗 " + yichang.Message);
            }
            finally
            {
                // 釋放資源和清理操作
                Insertuser.Dispose();
                Insertuser = null;
                MyConnectionDB.Close();
            }
        }
        Debug.Log("注冊(cè)成功.");
    
    }

    // 讀取用戶表中的數(shù)據(jù)的方法
    // 每次執(zhí)行完數(shù)據(jù)庫命令后,通常需要調(diào)用 ExecuteNonQuery() 方法來執(zhí)行命令,然后使用 Dispose() 方法釋放相關(guān)資源,
    // 最后將對(duì)象置為 null。 
    public void ClearDB()//關(guān)閉數(shù)據(jù)庫
    {

        MyConnectionDB.Close();
        MyConnectionDB = null;
    }
}

?PS 用完數(shù)據(jù)庫要關(guān)閉和清空====================

?unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

這段代碼是用于關(guān)閉數(shù)據(jù)庫連接的方法。具體來說,MyConnectionDB.Close()表示關(guān)閉當(dāng)前數(shù)據(jù)庫連接,并釋放與該連接關(guān)聯(lián)的任何資源。而MyConnectionDB = null;則將數(shù)據(jù)庫連接對(duì)象置為null,以便垃圾回收器可以在適當(dāng)?shù)臅r(shí)候?qū)⑵浠厥铡?/p>

關(guān)閉數(shù)據(jù)庫連接對(duì)于提高應(yīng)用程序性能和防止資源泄漏非常重要。如果沒有正確關(guān)閉數(shù)據(jù)庫連接,可能會(huì)導(dǎo)致連接池被占用過多而影響應(yīng)用程序性能,或者導(dǎo)致系統(tǒng)資源不足而導(dǎo)致應(yīng)用程序出現(xiàn)異常。

在使用完數(shù)據(jù)庫連接后,應(yīng)該及時(shí)關(guān)閉它,以便讓其他應(yīng)用程序能夠通過連接池訪問數(shù)據(jù)庫。同時(shí),將對(duì)象置為null也有助于垃圾回收器及時(shí)回收不再使用的資源,以提高應(yīng)用程序的性能和穩(wěn)定性。

總之,本段代碼的作用是在關(guān)閉數(shù)據(jù)庫連接后,將連接對(duì)象置為null,以便垃圾回收器可以及時(shí)回收資源。

最終效果:

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity

unity連接數(shù)據(jù)庫,Unity零基礎(chǔ)課程,數(shù)據(jù)庫與服務(wù)器,數(shù)據(jù)庫,sqlite,unity文章來源地址http://www.zghlxwxcb.cn/news/detail-758558.html

到了這里,關(guān)于Unity 制作登錄功能02-創(chuàng)建和鏈接數(shù)據(jù)庫(SQlite)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Qt 數(shù)據(jù)庫的注冊(cè)和登錄功能

    Qt 數(shù)據(jù)庫的注冊(cè)和登錄功能

    widget.h widget.cpp ?client.h client.cpp ?main函數(shù) 窗口設(shè)計(jì)部分 最終效果圖:

    2024年02月07日
    瀏覽(23)
  • MVC框架實(shí)現(xiàn)用戶登錄注冊(cè)功能(連接數(shù)據(jù)庫)

    MVC框架實(shí)現(xiàn)用戶登錄注冊(cè)功能(連接數(shù)據(jù)庫)

    一、簡(jiǎn)單理解MVC框架 二、項(xiàng)目結(jié)構(gòu) 三、項(xiàng)目源碼 3.1 User 3.2?UserDao 3.3?RegisterDao 3.4?servletControll 3.5 servletControllRegister 3.6?web.xml 3.7?login.jsp 3.8?register.jsp 3.9?success.jsp 3.10?failure.jsp ?四、實(shí)現(xiàn)效果 總結(jié) 本篇文章主要介紹利用MVC框架去實(shí)現(xiàn)一個(gè)簡(jiǎn)單的用戶登錄注冊(cè)功能,內(nèi)容主

    2024年02月06日
    瀏覽(38)
  • Flutter框架實(shí)現(xiàn)登錄注冊(cè)功能,不連接數(shù)據(jù)庫

    要在Flutter框架中實(shí)現(xiàn)登錄和注冊(cè)功能,而不連接數(shù)據(jù)庫,可以使用本地存儲(chǔ)來存儲(chǔ)用戶信息。以下是一個(gè)簡(jiǎn)單的示例,演示如何使用本地存儲(chǔ)來實(shí)現(xiàn)登錄和注冊(cè)功能。 首先,我們需要添加 shared_preferences 插件到 pubspec.yaml 文件中: 然后,在 lib 文件夾中創(chuàng)建一個(gè)新的文件夾

    2024年02月08日
    瀏覽(26)
  • JavaWeb實(shí)現(xiàn)簡(jiǎn)易的注冊(cè)登錄功能(與數(shù)據(jù)庫連接)

    JavaWeb實(shí)現(xiàn)簡(jiǎn)易的注冊(cè)登錄功能(與數(shù)據(jù)庫連接)

    一、創(chuàng)建數(shù)據(jù)庫表連接 這里我們創(chuàng)建一個(gè)數(shù)據(jù)庫名為db_user,創(chuàng)建庫的使用可視化工具很簡(jiǎn)單就不細(xì)說了,下面sql代碼塊是我們創(chuàng)建一個(gè)簡(jiǎn)易用戶表為了方便我們后續(xù)進(jìn)行登錄注冊(cè)操作。 下面就是建好的表: 1、建一個(gè)與數(shù)據(jù)庫連接的file文件:db.properties 二、創(chuàng)建前端頁面 1、

    2024年01月19日
    瀏覽(23)
  • JavaWeb04(登錄&綁值&模糊查詢&功能實(shí)現(xiàn)&連接數(shù)據(jù)庫)

    JavaWeb04(登錄&綁值&模糊查詢&功能實(shí)現(xiàn)&連接數(shù)據(jù)庫)

    目錄 一.實(shí)現(xiàn)登錄功能 ?2.2 制作簡(jiǎn)易驗(yàn)證碼 2.3 完成登錄驗(yàn)證 2.4 登錄實(shí)現(xiàn) ①連接字符串 private static final String URL=\\\"jdbc:oracle:thin:@localhost:1521:orcl\\\"; ②加載驅(qū)動(dòng)? OracleDriver private static final String URL=\\\"jdbc:oracle:thin:@localhost:1521:orcl\\\"; ? ?? 二.實(shí)現(xiàn)表格版的綁定數(shù)據(jù) 2.1 效果預(yù)覽 2.2?代

    2024年02月02日
    瀏覽(24)
  • java連接數(shù)據(jù)庫實(shí)現(xiàn)登錄與注冊(cè)小功能(小白版)

    java連接數(shù)據(jù)庫實(shí)現(xiàn)登錄與注冊(cè)小功能(小白版)

    準(zhǔn)備工作: 創(chuàng)建數(shù)據(jù)庫stu;? ? ? ? create database stu charset=utf8; 使用數(shù)據(jù)庫stu;? ? ? ? ? ? use stu; 創(chuàng)建用戶表user(id,username,password,nick) create table user(id int primary key auto_increment,username varchar(50),password varchar(50),nick varchar(50)); ? 1.開始創(chuàng)建springboot工程,勾選Web-spring Web,? SQL-MyBatis Frame

    2024年02月08日
    瀏覽(19)
  • 數(shù)據(jù)庫——報(bào)錯(cuò):無法創(chuàng)建鏈接服務(wù)器 “(null)“ 的 OLE DB 訪問接口 “Microsoft.Ace.OLEDB.12.0“ 的實(shí)例。

    數(shù)據(jù)庫——報(bào)錯(cuò):無法創(chuàng)建鏈接服務(wù)器 “(null)“ 的 OLE DB 訪問接口 “Microsoft.Ace.OLEDB.12.0“ 的實(shí)例。

    安裝完 AccessDatabaseEngine_X64 (2012).exe 后,準(zhǔn)備在從Excel導(dǎo)入數(shù)據(jù)時(shí): 輸入如下代碼 報(bào)錯(cuò)一: SQLServer阻止了對(duì)組件’AdHocDistributedQueries’的STATEMENT’OpenRowset/OpenDatasource’的訪問,因?yàn)榇私M件已作為此服務(wù)器安全配置的一部分而被關(guān)閉。系統(tǒng)管理員可以通過使用。sp_configure啟用’

    2024年02月12日
    瀏覽(24)
  • Android開發(fā)----實(shí)現(xiàn)登錄注冊(cè)頁面(創(chuàng)建本地?cái)?shù)據(jù)庫,對(duì)注冊(cè)的賬戶密碼進(jìn)行存儲(chǔ))

    Android開發(fā)----實(shí)現(xiàn)登錄注冊(cè)頁面(創(chuàng)建本地?cái)?shù)據(jù)庫,對(duì)注冊(cè)的賬戶密碼進(jìn)行存儲(chǔ))

    寫在前面: 本文實(shí)現(xiàn)了登錄注冊(cè)頁面的開發(fā),創(chuàng)建了本地?cái)?shù)據(jù)庫,存儲(chǔ)注冊(cè)的賬戶密碼。注冊(cè)賬戶為手機(jī)號(hào),對(duì)賬戶為手機(jī)號(hào)進(jìn)行了正則化驗(yàn)證。登錄成功跳轉(zhuǎn)至主頁面。 20221028-實(shí)現(xiàn)登錄注冊(cè)功能 首先說一下,項(xiàng)目部署是在原有項(xiàng)目新建兩個(gè)activity( 項(xiàng)目右鍵–new–activi

    2024年02月03日
    瀏覽(28)
  • Spring Boot 3 + Vue 3實(shí)戰(zhàn):引入數(shù)據(jù)庫實(shí)現(xiàn)用戶登錄功能

    Spring Boot 3 + Vue 3實(shí)戰(zhàn):引入數(shù)據(jù)庫實(shí)現(xiàn)用戶登錄功能

    ? 本次實(shí)戰(zhàn),我們深入實(shí)踐了基于數(shù)據(jù)庫的用戶登錄功能開發(fā)。首先構(gòu)建了包含id、username和password字段的 user 表,并初始化了測(cè)試數(shù)據(jù)。接著,在后端Spring Boot項(xiàng)目中集成MySQL數(shù)據(jù)庫驅(qū)動(dòng)與Druid連接池,以及MyBatis持久層框架,通過配置 application.yaml 文件來指定數(shù)據(jù)庫連接信息

    2024年02月01日
    瀏覽(30)
  • Android Studio實(shí)現(xiàn)Mysql(5.7)數(shù)據(jù)庫增刪改查(上)——用戶登錄功能實(shí)現(xiàn)

    Android Studio實(shí)現(xiàn)Mysql(5.7)數(shù)據(jù)庫增刪改查(上)——用戶登錄功能實(shí)現(xiàn)

    前言:如果android studio安裝和第一次跑helloworld有什么問題可以參考:(34條消息) Android Studio踩的那些坑(gradle build、unable to find tasks to···等等)_TidesWise的博客-CSDN博客 目錄 準(zhǔn)備工作 查詢學(xué)生數(shù)目demo:? 增刪改查完整案例 1、在Android Studio中新建項(xiàng)目My Application; 2、在Androi

    2024年02月10日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包