色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用Arduino和Unity制作自定義游戲控制器

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 11:43 ? 次閱讀

您曾經(jīng)想設(shè)計(jì)自己的游戲控制器嗎?

在這個(gè)簡(jiǎn)短的項(xiàng)目中,我們將構(gòu)建一個(gè)簡(jiǎn)單的自定義游戲控制器,以與Unity游戲引擎一起使用。該控制器將由Arduino Uno供電,盡管您也可以使用該項(xiàng)目的眾多替代產(chǎn)品之一。我們還將創(chuàng)建一個(gè)基本的游戲,在該游戲中,您將使用控制器來(lái)避免物體掉落和減慢時(shí)間。

對(duì)于此項(xiàng)目,您將需要

Arduino或類(lèi)似的微控制器

1 x 10k歐姆電阻

1 x瞬時(shí)開(kāi)關(guān)

1 x電位計(jì)

連接線

面包板

Unity游戲引擎

Unity Asset Store中的Uniduino插件(30美元)

完成項(xiàng)目代碼,以防萬(wàn)一您不想編寫(xiě)它(不包括Uniduino插件)

這些東西大多數(shù)都可以在Arduino入門(mén)套件中找到。如果沒(méi)有入門(mén)工具包,請(qǐng)查看我們的指南,為您選擇最合適的指南。

您可以根據(jù)需要使控制器變得復(fù)雜,盡管在此示例中,我們將設(shè)置一個(gè)電位計(jì)和一個(gè)按鈕–非常適合控制簡(jiǎn)單的街機(jī)游戲。

組裝控制器

設(shè)置面包板和Arduino,如這是我們將用作游戲控制器的圖像,盡管您也可以使用與DIY midi控制器幾乎完全相同的設(shè)置!

準(zhǔn)備Arduino

一旦一切都連接好,請(qǐng)通過(guò)USB連接Arduino。在Arduino Software IDE中,轉(zhuǎn)到工具》板和工具》端口,以選擇要使用的微控制器和端口。 Arduino IDE隨附了我們所需的草圖,您可以在文件》示例》固件》 StandardFirmata 下找到它。單擊“上載”,您就可以準(zhǔn)備就緒。

如果您是Arduino的新手,并且腦袋有點(diǎn)融化,請(qǐng)查看我們的初學(xué)者指南,以幫助您與計(jì)算機(jī)進(jìn)行良好的交談。

設(shè)置您的Unity項(xiàng)目

InUnity,打開(kāi) Window》 Asset Store 可以從Unity編輯器中訪問(wèn)Unity的Asset Store。在資產(chǎn)商店中搜索Uniduino插件。這個(gè)插件將允許您在Unity內(nèi)部的Arduino引腳之間收發(fā)數(shù)據(jù)。在撰寫(xiě)本文時(shí),該插件的價(jià)格為30美元。可以在不購(gòu)買(mǎi)插件的情況下進(jìn)行此項(xiàng)目,盡管它相當(dāng)復(fù)雜,并且您可能會(huì)發(fā)現(xiàn)插件更方便。

視頻來(lái)自插件創(chuàng)建者的幫助,帶您完成了所有功能的測(cè)試過(guò)程以及首次設(shè)置。請(qǐng)注意,您可能還必須在Windows上重置Unity編輯器。

我們可以使用同一測(cè)試面板來(lái)測(cè)試我們的控制器。將引腳D2設(shè)置為INPUT和Digital。再往下,將引腳A5設(shè)置為ANALOG。電位計(jì)和按鈕現(xiàn)在應(yīng)該在屏幕上的引腳號(hào)旁邊顯示值。進(jìn)步!

現(xiàn)在可以做一些我們可以控制的事情了

所以我們有一個(gè)控制器,但是我們應(yīng)該控制什么呢?好吧,可能性無(wú)窮無(wú)盡,但今天,我們將創(chuàng)建一個(gè)非常簡(jiǎn)單的躲避游戲,以測(cè)試我們的新控制系統(tǒng)。我們將很快地完成游戲設(shè)置,因此,如果您是Unity引擎的新手,您可能會(huì)發(fā)現(xiàn)《 Unity游戲編程初學(xué)者指南》很有用。

我們將構(gòu)建一個(gè)非常基本的游戲,其中您的目標(biāo)是向左和向右避開(kāi)球體以避免掉落立方體,這將利用您新創(chuàng)建的自定義控制器。

創(chuàng)建一個(gè)新場(chǎng)景并將Uniduino預(yù)制件從資產(chǎn)》 Uniduino》中拖動(dòng)預(yù)制件進(jìn)入您的階層,然后將Uniduino預(yù)制件拖入層次結(jié)構(gòu)。

在Unity層次結(jié)構(gòu)中,單擊 Create》 Sphere ,然后使用檢查器中的“變換”選項(xiàng)卡將其移至底部。游戲畫(huà)面。

現(xiàn)在該開(kāi)始編碼了。

現(xiàn)在要向此聚會(huì)添加一些代碼。在“層次結(jié)構(gòu)”中選擇球體后,點(diǎn)擊其Inspector窗口底部的添加組件》新腳本。將其命名為 sphereMover ,然后從下拉菜單中選擇 C Sharp 。點(diǎn)擊創(chuàng)建并添加,腳本將被添加到GameObject中。雙擊它以打開(kāi)腳本并輸入以下代碼:

using UnityEngine;

using System.Collections;

using Uniduino;

public class sphereMover : MonoBehaviour

{

//Headers aren‘t scrictly neccesary, but they make life easier back in the Inspector.

[Header(“Arduino Variables”)]

//we need to declare the Arduino as a variable

public Arduino arduino;

//we need to declare an integer for the pin number of our potentiometer,

//making these variables public means we can change them in the editor later

//if we change the layout of our arduino

public int potPinNumber;

//a float variable to hold the potentiometer value (0 - 1023)

public float potValue;

//we will later remap that potValue to the y position of our capsule and hold it in this variable

public float mappedPot;

//public int for our button pin

public int buttonPinNumber;

[Header(“Sphere Variables”)]

//variables to hold the values we noted earlier for the sides of our screen

public float leftEdge;

public float rightEdge;

// Use this for initialization

void Start ()

{//and initialize we shall, starting with the Arduino Variable.

//we are only using one arduino, so we can use Arduino.global to grab it.

arduino = Arduino.global;

arduino.Setup(ConfigurePins);

}

void ConfigurePins()

{

//configure the Arduino pin to be analog for our potentiometer

arduino.pinMode(potPinNumber, PinMode.ANALOG);

//Tell the Arduino to report any changes in the value of our potentiometer

arduino.reportAnalog(5, 1);

//configure our Button pin

arduino.pinMode(buttonPinNumber, PinMode.INPUT);

arduino.reportDigital((byte)(buttonPinNumber / 8), 1);

}

}

花點(diǎn)時(shí)間通讀代碼注釋。到目前為止,我們已經(jīng)為Arduino,其引腳和Sphere聲明了一些變量。我們還使用了

Start和ConfigurePins方法在運(yùn)行時(shí)初始化Arduino。保存腳本,然后返回Unity編輯器,看看有什么更改。

我們現(xiàn)在可以在Inspector窗口中看到我們的公共變量。讓我們看看我們?cè)诂F(xiàn)階段可以輸入什么以幫助我們以后。我們?cè)缦戎牢覀冊(cè)贏rduino上使用的是什么引腳,我們可以輸入它們。我們還從實(shí)驗(yàn)中更早地知道了我們希望球體能夠左右移動(dòng)的距離,以使其不會(huì)從屏幕上掉落。現(xiàn)在讓我們輸入這些值。

最初的生命跡象

是時(shí)候在Unity Editor中實(shí)際查看來(lái)自Arduino的值了。現(xiàn)在,我們可以在sphereMover腳本的Update函數(shù)中添加一行代碼,然后再次保存該腳本。

void Update ()

{

//We assign the value the arduino is reading from our potentionmeter to our potValue variable

potValue = arduino.analogRead(potPinNumber);

}

現(xiàn)在,我們的potValue變量每幀都會(huì)更新一次。 ,我們可以在Unity Inspector中實(shí)時(shí)看到它的價(jià)值。在進(jìn)行測(cè)試之前,現(xiàn)在是時(shí)候檢查Uniduino插件是否在正確的端口上進(jìn)行偵聽(tīng)。在層次結(jié)構(gòu)中單擊Uniduino,然后在檢查器中檢查它的端口名稱。如果為空白,請(qǐng)為您的Arduino輸入正確的端口號(hào)。在這種情況下,它是COM4,盡管它可能與您有所不同。如果不確定,請(qǐng)檢查使用Arduino IDE。

在層次結(jié)構(gòu)中選擇球體,然后單擊屏幕頂部的“播放”按鈕。系統(tǒng)需要幾秒鐘的初始化時(shí)間,此后您應(yīng)該在移動(dòng)電位器時(shí)開(kāi)始在檢查器中看到Pot Value變量的變化。

現(xiàn)在我們正在交談!好吧,嚴(yán)格來(lái)說(shuō),Unity和Arduino在說(shuō)話,但是誰(shuí)在數(shù)呢?如果您到此為止并且在檢查器中看不到值的變化,請(qǐng)檢查設(shè)置步驟,并確保為Arduino選擇了正確的端口。

讓我們移動(dòng)這個(gè)球體

現(xiàn)在我們已經(jīng)更新了potValue變量,我們想使用該值來(lái)移動(dòng)我們的球體。當(dāng)電位計(jì)完全移到左側(cè)時(shí),我們希望球體位于屏幕的左側(cè),反之亦然。 Unity中的對(duì)象位于Vector空間中的某個(gè)點(diǎn),該點(diǎn)由其Transform.position的值確定。在下面的圖像中,球體在我們想要的最左邊的位置,您可以看到它的位置向量是9.5,-4,0。

我們想影響球體的X位置。不幸的是,直接使用電位器的值將不起作用,因?yàn)楫?dāng)電位器一直向左移動(dòng)時(shí),其值為0,這會(huì)使我們的球體位于屏幕中間。在另一個(gè)極端,電位器的最高值1023將使立方體遠(yuǎn)離屏幕的右側(cè)。沒(méi)用。我們需要的是一些數(shù)學(xué)。

為什么Unity會(huì)為您做數(shù)學(xué)?

對(duì)于那些在那里的人,他們害怕地盯著一張無(wú)意義數(shù)字覆蓋的紙(盡管有一些很棒的網(wǎng)站可以幫助您學(xué)習(xí)數(shù)學(xué)),但不要害怕。我們需要一種使電位計(jì)值與球體的X位置相對(duì)應(yīng)的方法。幸運(yùn)的是,我們可以使用擴(kuò)展方法。

擴(kuò)展方法是為我們完成特定工作的腳本。在這種情況下,我們給它提供我們擁有的值,并返回它們之間的映射關(guān)系,以便在我們的 sphereMover 腳本中使用。在“項(xiàng)目”面板的頂部,單擊創(chuàng)建》 C#腳本,并將其命名為ExtensionMethods。在腳本中輸入以下代碼:

using UnityEngine;

using System.Collections;

public static class ExtensionMethods {

//our handy dandy Remapper function

public static float Remap (this float value, float from1, float to1, float from2, float to2)

{

return (value - from1) / (to1 - from1) * (to2 - from2) + from2;

}

}

保存該腳本,然后回到您的sphereMover腳本。現(xiàn)在,我們可以在Update函數(shù)的ExtensionMethods腳本中使用此Remap函數(shù),將電位計(jì)值轉(zhuǎn)換為游戲中可用的值。在我們剛剛分配了potValue變量的位置,鍵入以下內(nèi)容:

提示顯示我們的Remap接受了兩組From和To值,并映射了他們?cè)谝黄稹N覀兛梢栽谄渲休斎胫怠?/p>

mappedPot = potValue.Remap(0, 1023, leftEdge, rightEdge);

保存您的腳本,回到Unity編輯器,然后單擊播放按鈕。現(xiàn)在,您應(yīng)該看到,移動(dòng)電位計(jì)時(shí),“映射的電位器”變量會(huì)發(fā)生變化,以與我們?yōu)樽笥疫吘壌_定的值相對(duì)應(yīng)。花一點(diǎn)時(shí)間坐下來(lái),感謝您的ExtensionMethods腳本。

注意:如果您注意到自己的值是相反的,那么當(dāng)電位計(jì)完全移到右邊時(shí)如果您的“ Mapped Pot”變量獲得負(fù)值,則可能是電位計(jì)設(shè)置錯(cuò)誤。幸運(yùn)的是,您無(wú)需進(jìn)行任何重新布線即可解決此問(wèn)題。重新映射它們時(shí),只需切換值即可:

現(xiàn)在,我們終于有了可用的值。現(xiàn)在剩下要做的就是將這些值分配給我們球體的X位置:

//Assign the mapped pot value to the sphere’s x position

transform.position = new Vector3(mappedPot, transform.position.y, transform.position.z);

保存腳本,返回Unity編輯器并按播放。現(xiàn)在,您應(yīng)該可以使用電位計(jì)將Sphere左右移動(dòng)!

將按鈕置于工作狀態(tài)

現(xiàn)在我們可以移動(dòng)球形了,不是嗎?當(dāng)我們?cè)讵M窄的地方時(shí),有什么辦法可以減慢速度嗎?我們將使用按鈕來(lái)減慢游戲時(shí)間。打開(kāi)您的sphereMover腳本,然后將此代碼添加到您的Update函數(shù)中

//if Unity detects the button is being pressed, the time scale slows down

if (arduino.digitalRead(buttonPinNumber) == 1){

Time.timeScale = 0.4f;

}

else Time.timeScale = 1.0f;

現(xiàn)在,我們已經(jīng)有了游戲的機(jī)制,請(qǐng)?zhí)砑右恍┱系K!我們將使用球體的天敵,即立方體。在層次結(jié)構(gòu)中,單擊創(chuàng)建》 3d對(duì)象》多維數(shù)據(jù)集。在多維數(shù)據(jù)集的檢查器中,添加組件》物理》剛體。將剛體的“拖動(dòng)”值設(shè)置為5。此外,在檢查器的“ Box Collider”組件下,選擇“ Is Trigger”。

在多維數(shù)據(jù)集上創(chuàng)建一個(gè)腳本,并將其命名為 collideWithSphere ,打開(kāi)腳本并刪除Start和Update函數(shù),這將使我們能夠檢測(cè)到與Sphere的碰撞。這次不需要他們。輸入以下代碼:

using UnityEngine;

using System.Collections;

public class collideWithSphere : MonoBehaviour

{

void OnTriggerEnter(Collider other)

{

Destroy(other.gameObject);

}

}

OnTriggerEnter每當(dāng)觸發(fā)對(duì)撞機(jī)碰到另一個(gè)對(duì)撞機(jī)時(shí)都會(huì)發(fā)送一條消息。在這種情況下,我們要告訴它銷(xiāo)毀一切。保存腳本并返回到Unity編輯器。將多維數(shù)據(jù)集從層次結(jié)構(gòu)拖動(dòng)到“項(xiàng)目”面板。您會(huì)注意到層次結(jié)構(gòu)中的多維數(shù)據(jù)集文本已變?yōu)樗{(lán)色。這是因?yàn)槲覀円呀?jīng)創(chuàng)建了一個(gè)預(yù)制件并將其保存在我們的項(xiàng)目中。現(xiàn)在從層次結(jié)構(gòu)中刪除多維數(shù)據(jù)集。

我們現(xiàn)在需要的是一個(gè)腳本,用于生成多維數(shù)據(jù)集。在層次結(jié)構(gòu)中,單擊創(chuàng)建》創(chuàng)建空白,然后將其重命名為“檢查器”中的“游戲管理器”,然后向其中添加一個(gè)名為gameManager的腳本。打開(kāi)腳本并添加以下代碼:

using UnityEngine;

using System.Collections;

public class gameManager : MonoBehaviour {

//a variable to hold the prefab we want to spawn

public GameObject cube;

//we want some variables to decide how any cubes to spawn

//and how high above us we want them to spawn

public int numberToSpwan;

public float lowestSpawnheight;

public float highestSpawnheight;

// Use this for initialization

void Start ()

{

for (int i = 0; i 《 numberToSpwan; i++)

{

Instantiate(cube, new Vector3(Random.Range(-9, 9), Random.Range(lowestSpawnheight, highestSpawnheight), 0), Quaternion.identity);

}

}

// Update is called once per frame

void Update ()

{

}

}

保存腳本。返回編輯器,在層次結(jié)構(gòu)中選擇“游戲管理器”,然后將多維數(shù)據(jù)集預(yù)制體從項(xiàng)目面板拖到檢查器中的“多維數(shù)據(jù)集”變量。還要在此處填寫(xiě)生成的值。您可以隨意擺弄它,以使其變硬或簡(jiǎn)單。請(qǐng)注意,將最低的多維數(shù)據(jù)集生成足夠高以允許Uniduino初始化是值得的-在移動(dòng)之前輸?shù)粲螒蚩赡軙?huì)令人沮喪!

完成的項(xiàng)目

現(xiàn)在,當(dāng)您按Play時(shí),多維數(shù)據(jù)集將在您上方生成并掉落。您可以使用電位計(jì)來(lái)避免它們,并可以使用按鈕來(lái)減慢時(shí)間。

在此項(xiàng)目中,我們使用Arduino創(chuàng)建了自定義控制器,將Unity和Uniduino配置為與其通信,并創(chuàng)建了一個(gè)簡(jiǎn)單的控件。游戲進(jìn)行測(cè)試。這里的概念幾乎可以應(yīng)用于任何項(xiàng)目,甚至還有專(zhuān)門(mén)針對(duì)自定義控制器的游戲卡紙。

借助Arduino和Unity,您幾乎可以從任何東西創(chuàng)建自定義控制器。您是否創(chuàng)建了控制飛船的高保真音響?一個(gè)控制平臺(tái)游戲的烤面包機(jī)?

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16444

    瀏覽量

    179129
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187641
  • Unity
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    21856
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Altium Designer 15.0自定義元件設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《Altium Designer 15.0自定義元件設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 01-21 15:04 ?0次下載
    Altium Designer 15.0<b class='flag-5'>自定義</b>元件設(shè)計(jì)

    think-cell:自定義think-cell(四)

    C.5 設(shè)置默認(rèn)議程幻燈片布局 think-cell 議程可以在演示文稿中使用特定的自定義布局來(lái)定義議程、位置和議程幻燈片上的其他形狀,例如標(biāo)題或圖片。通過(guò)將此自定義布局添加到模板,您可以為整個(gè)組織
    的頭像 發(fā)表于 01-13 10:37 ?84次閱讀
    think-cell:<b class='flag-5'>自定義</b>think-cell(四)

    智能語(yǔ)音識(shí)別照明解決方案,平臺(tái)自定義,中英切換

    智能語(yǔ)音識(shí)別照明方案引入NRK3502芯片,支持平臺(tái)自定義,離線控制,中英雙語(yǔ)切換。NRK3502具備高性能和靈活自定義能力,可推動(dòng)智能照明革新,控制其他智能設(shè)備,為國(guó)際用戶提供全方位
    的頭像 發(fā)表于 01-10 13:23 ?65次閱讀
    智能語(yǔ)音識(shí)別照明解決方案,平臺(tái)<b class='flag-5'>自定義</b>,中英切換

    think-cell;自定義think-cell(一)

    本章介紹如何自定義 think-cell,即如何更改默認(rèn)顏色和其他默認(rèn)屬性;這是通過(guò) think-cell 的樣式文件完成的,這些文件將在前四個(gè)部分中進(jìn)行討論。 第五部分 C.5 設(shè)置默認(rèn)議程幻燈片
    的頭像 發(fā)表于 01-08 11:31 ?128次閱讀
    think-cell;<b class='flag-5'>自定義</b>think-cell(一)

    開(kāi)放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下自定義圖形標(biāo)刻

    開(kāi)放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下自定義圖形標(biāo)刻
    的頭像 發(fā)表于 10-08 10:45 ?701次閱讀
    開(kāi)放式激光振鏡運(yùn)動(dòng)<b class='flag-5'>控制器</b>在Ubuntu+Qt下<b class='flag-5'>自定義</b>圖形標(biāo)刻

    如何將自定義邏輯從FPGA/CPLD遷移到C2000?微控制器

    電子發(fā)燒友網(wǎng)站提供《如何將自定義邏輯從FPGA/CPLD遷移到C2000?微控制器.pdf》資料免費(fèi)下載
    發(fā)表于 09-23 12:36 ?0次下載
    如何將<b class='flag-5'>自定義</b>邏輯從FPGA/CPLD遷移到C2000?微<b class='flag-5'>控制器</b>

    創(chuàng)建自定義的基于閃存的引導(dǎo)加載程序(BSL)

    電子發(fā)燒友網(wǎng)站提供《創(chuàng)建自定義的基于閃存的引導(dǎo)加載程序(BSL).pdf》資料免費(fèi)下載
    發(fā)表于 09-19 10:50 ?0次下載
    創(chuàng)建<b class='flag-5'>自定義</b>的基于閃存的引導(dǎo)加載程序(BSL)

    如何自定義內(nèi)存控制器的設(shè)置

    在FreeRTOS中自定義內(nèi)存控制器的設(shè)置,主要涉及到內(nèi)存分配策略的選擇和配置。FreeRTOS提供了多種內(nèi)存分配策略,如heap_1、heap_2、heap_3、heap_4和heap_5,每種
    的頭像 發(fā)表于 09-02 14:28 ?560次閱讀

    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶自定義軌跡規(guī)劃

    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶自定義軌跡規(guī)劃。
    的頭像 發(fā)表于 08-15 11:49 ?701次閱讀
    EtherCAT運(yùn)動(dòng)<b class='flag-5'>控制器</b>PT/PVT實(shí)現(xiàn)用戶<b class='flag-5'>自定義</b>軌跡規(guī)劃

    NVIDIA NeMo加速并簡(jiǎn)化自定義模型開(kāi)發(fā)

    如果企業(yè)希望充分發(fā)揮出 AI 的力量,就需要根據(jù)其行業(yè)需求量身定制的自定義模型。
    的頭像 發(fā)表于 07-26 11:17 ?802次閱讀
    NVIDIA NeMo加速并簡(jiǎn)化<b class='flag-5'>自定義</b>模型開(kāi)發(fā)

    Chrome移動(dòng)版支持自定義菜單欄功能

    在先前版本中,用戶通過(guò)點(diǎn)擊瀏覽右上角的三個(gè)點(diǎn)按鈕即可調(diào)出包含各類(lèi)圖標(biāo)與操作的菜單。而此次更新后,Chrome新增了“自定義菜單”選項(xiàng),允許用戶自主控制該區(qū)域的展示內(nèi)容。
    的頭像 發(fā)表于 05-27 15:00 ?869次閱讀

    HarmonyOS開(kāi)發(fā)案例:【 自定義彈窗】

    基于ArkTS的聲明式開(kāi)發(fā)范式實(shí)現(xiàn)了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實(shí)現(xiàn)自定義彈窗
    的頭像 發(fā)表于 05-16 18:18 ?1436次閱讀
    HarmonyOS開(kāi)發(fā)案例:【 <b class='flag-5'>自定義</b>彈窗】

    TSMaster 自定義 LIN 調(diào)度表編程指導(dǎo)

    LIN(LocalInterconnectNetwork)協(xié)議調(diào)度表是用于LIN總線通信中的消息調(diào)度的一種機(jī)制,我們收到越來(lái)越多來(lái)自不同用戶希望能夠通過(guò)接口實(shí)現(xiàn)自定義LIN調(diào)度表的需求。所以在
    的頭像 發(fā)表于 05-11 08:21 ?736次閱讀
    TSMaster <b class='flag-5'>自定義</b> LIN 調(diào)度表編程指導(dǎo)

    HarmonyOS開(kāi)發(fā)實(shí)例:【自定義Emitter】

    使用[Emitter]實(shí)現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設(shè)置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?1044次閱讀
    HarmonyOS開(kāi)發(fā)實(shí)例:【<b class='flag-5'>自定義</b>Emitter】

    鴻蒙ArkUI實(shí)例:【自定義組件】

    組件是 OpenHarmony 頁(yè)面最小顯示單元,一個(gè)頁(yè)面可由多個(gè)組件組合而成,也可只由一個(gè)組件組合而成,這些組件可以是ArkUI開(kāi)發(fā)框架自帶系統(tǒng)組件,比如?`Text`?、?`Button`?等,也可以是自定義組件,本節(jié)筆者簡(jiǎn)單介紹一下自定義組件的語(yǔ)法規(guī)范。
    的頭像 發(fā)表于 04-08 10:17 ?692次閱讀
    主站蜘蛛池模板: 欧美 亚洲 中文字幕 高清 | 饥渴的40岁熟妇完整版在线 | 动漫美女人物被黄漫在线看 | 国产永不无码精品AV永久 | 国产香蕉视频 | 领导边摸边吃奶边做爽在线观看 | 亚洲精品欧美精品中文字幕 | 青青草在现线免费观看 | 狼群资源网中文字幕 | 亚洲国产成人在线视频 | 亚洲国产精品嫩草影院久久 | 国产人成高清在线视频99 | 欧美精品高潮呻吟AV久久 | 亚洲伊人色综合久久天天伊人 | 亚洲AV久久婷婷蜜臀无码不卡 | 美女坐脸vk| 又黄又粗又爽免费观看 | 欧美激情一区二区三区视频 | jizzhd中国| 免费网站在线观看国产v片 免费完整版观看 | 欧美午夜精品A片一区二区HD | 国产精品熟女人妻 | 成年人在线视频免费观看 | 高清国产在线观看 | 国产精品黄色大片 | 人与禽交3d动漫羞羞动漫 | 中文字幕无线观看不卡网站 | 欧美一道本一区二区三区 | 国产精品亚洲专一区二区三区 | 老头扒开粉缝亲我下面 | 性生交片免费无码看人 | 攻把受做哭边走边肉楼梯PLAY | 美女被触手注入精子强制受孕漫画 | 精品国产免费第一区二区 | 97免费视频在线观看 | 国产亚洲精品影视在线 | 国产精品外围在线观看 | 日韩欧无码一区二区三区免费不卡 | 97草碰在线视频免费 | 皮皮色狼网 | 三级网址在线播放 |