에러메시지 뜰때 해결법

 

1. 유니티를 끈다

2. 프로젝트 폴더/Temp/  안에있는 PropertyDatabase_ 로 시작하는 파일을 지운다

3. 유니티 재실행 하면 메시지가 사라져있다.

 

 

https://forum.unity.com/threads/the-property-database-library-search-propertydatabase-db-is-already-opened.1285634/

해상도에 대응하는 코드는 여러 블로그에 있는데, 적용하던 중 레터박스 쪽에 파란색으로 깜빡거리는 현상이 발생했다.(테스트 기종: 갤럭시s10)

첫 실행시에는 문제없어도 백그라운드로 내리고 다시 키면 깜빡임 현상이 재현되는 경우도 있었다.

 

검색 중에 아래 블로그를 발견

https://blog.naver.com/kj426/222131335427

 

읽어보면 URP에만 나타나는 문제같다.

 

적용 방법

1. 카메라에 스크립트 하나 생성 후, 위 블로그 코드를 붙여넣는다.
2. Start() 함수 안에 onSetting() 을 넣어준다(작성자가 깜빡한듯? ) 

<이하는 내 Canvas 세팅>

3. Canvas 오브젝트에 Canvas Scaler를 붙여주고, mode를 Scale with screen size,
레퍼런스 resolution을 내가 개발할때 켜두는 기준 화면해상도로 변경. Match는 가로게임인 경우 Height로 설정
4. Canvas Render mode를 Screen Space - Camera로 설정해줌

 

빌드 후 실행해보면 해상도 대응되면서 flickering 문제도 해결되었음을 알수있다.

 

 

 

구글 플레이 콘솔에서 올릴때 유니티 프로젝트 세팅에서 Version 숫자 바꿨음에도 계속 이 메시지가 뜨면서 앱번들 안올라갈 때가 있다. 아주 빡치는데 해결책은 아래와 같다

 

Project Settings - Player 탭 - 안드로이드 아이콘 - Other settings 에서 쭉쭊 내리다보면 Identification - Version과 Bundle version Code가 있는데 둘다 바꿔보자.

 

    public static GameManager I { get; private set; }
    private void Awake()
    {
        if (I == null)
        {
            I = this;
            DontDestroyOnLoad(this.gameObject);
        }
        else
        	Destroy(this.gameObject);
        
    }

 

싱글톤 코드가 길면 복잡해서 최대한 짧게 씀. 

이동(doMove)나 회전(doRotate) 등 모든 Do 시리즈 tween에 적용가능함

 

보통 오브젝트를 이동시키고 Tween 의 onComplete() 를 람다함수로 해서 다음 단계를 진행하곤 했는데,

tween.WaitForCompletion() 의 존재를 알고나니 코루틴과 결합하여 거의 모든 움직임을 손쉽게 구현할수 있게 되었다.

 

적을 이동시킨 후 공격을 하게한다고 하면,

IEnumerator MoveAndAttack(){
	var tween = enemy.transform.DOMove(pos, 0.3f);
    yield return tween.WaitForCompletion();
    enemy.Attack();
}

public void ButtonClicked(){
	StartCoroutine(MoveAndAttack());
}

이렇게 원하는 포지션(pos)로 이동 tween 완료시까지 대기(WaitForCompletion) 후, 원하는 작업을 처리하도록 하면

코드가 아주 깔끔해지고 람다함수를 쓰면서 겪는 호출순서나 scope 문제 등 복잡한 문제를 겪을 필요도 없다.

아주 아주 삶의 질을 높이는 두트윈 활용법! WaitForCompletion() 를 애용하도록 하자.

Act1 공략이다. 카드 대결을 하다보면 운빨 ㅈ망 게임이라는 생각이 들면서 빡칠때가 많다.

 

이 게임의 핵심은 "목각사"에게서 얼마나 좋은 조합을 얻어내느냐에 있다.

 

초강력 조합: 다람쥐 + 죽음 부활

쓸만한 조합: 다람쥐 + 개미생성

 

 

위 그림처럼 다람쥐에 부활 옵션을 조합시키면 거의 날로먹으면서 깰수있다.

다람쥐를 내고 희생시키면 곧바로 다람쥐가 손으로 돌아와서 무한 반복 가능하기 때문이다.

다람쥐가 한장이면 피 한방울짜리 카드는 한턴에 모조리 낼 수 있다는 뜻이다. 두장이면 피 두방울까지 모조리 놓는게 가능하다. 워낙 사기급 성능이라 1턴만에 깨는 경우도 많을 정도다.

 

목각사에서 원하는 옵션이 나오지 않았을 경우에는 머리부분만 일단 가져온 후,

다음 목각사를 만나 좋은 옵션을 고르면 된다.

 

다람쥐 + 개미 조합도 강력한데, 다람쥐만 새로 가져오면 턴마다 개미한마리씩 깔아둘 수 있고

개미는 깔린 수만큼 공격력이 증가하므로 턴당 16 이상의 공격도 가능하다.

 

운빨 ㅈ망겜에도 빈 틈을 잘 노리면 쉬운 갓겜이 될수 있음을 명심하자.

 

 

 

 

 

 

다른사람 프로젝트 열고 패키지 매니저에서 시네머신 install을 함.

게임은 제대로 플레이되는데 vs상에서 시네머신 인식이 빨간줄 뜨는경우의 해결책임.

 

1. 비주얼 스튜디오를 닫는다.

2. 하이어라키에 virual camera 하나 생성한다(cinemachine 메뉴에서)

3. 생성한 virtual 카메라에 새 스크립트 하나 생성하고 더블클릭해서 연다.

4. using Cinemachine; 하면 문제없이 인식됨

5. 에러뜨던 스크립트에서도 빨간줄 사라진걸 확인(이후 버추얼 카메라와 위 생성한 스크립트 삭제해도 에러 없음)

 

원리는 모르겟는데 문제는 해결됨. 

 

public class LODChange : MonoBehaviour
{
    [MenuItem("Component/LOD/Set Default LOD Range", false, 0)]
    static void DoSetDefaultLODRange()
    {
        var list = Selection.GetFiltered<GameObject>(SelectionMode.TopLevel);
        foreach (var go in list)
        {
            var d = go.GetComponent<LODGroup>();
            if (null != d)
            {
                var lods = d.GetLODs();
                lods[0].screenRelativeTransitionHeight = 0.05f;
                lods[1].screenRelativeTransitionHeight = 0.01f;
                d.SetLODs(lods);
                PrefabUtility.RecordPrefabInstancePropertyModifications(d);
            }
        }
    }
}

 

일단 소스코드를 보자. 코드는 new script로 새 스크립트 만든다음 붙여넣기 하면 된다.

컴파일하면 유니티 에디터 위에 Component/LOD/Set ~ 라는 메뉴가 생긴다. [MenuItem()] 에서 보이는 것처럼 말이다.

내용을 대충보면 Selection.Getfilterd 이므로 하이어라키에서 선택된 놈들 중 GameObject인걸 가져오는데 Toplevel 즉 자식은 제외하고 부모만 가져오겠다는걸로 보인다.

foreach 문을 돌면서 가져온 gameObject의 원하는 컴포넌트를 원하는 대로 수정해서 프리팹이면 수정내역을 저장하겠다 이런 말인것 같다. 

 

사용법: 바꾸고싶은 게임오브젝트를 다중선택 한 후 메뉴를 클릭하면 된다.

 

아주 간단한 코드지만, 아주 많은 gameObject를 한번에 바꾸고싶을때 일일이 노가다하지 않아도 되어 상당히 유용하게 쓰일수 있겠다.

 

https://forum.unity.com/threads/editing-multiple-lod-prefabs-at-once.257156/

 

 

 

3d텍스트메쉬프로 컴포넌트를 생성할때마다 제목의 메시지가 자꾸 뜬다.

위의 F 모양 아이콘이 폰트애셋 (.asset 확장자) 인데 이놈들이 밑줄_(underLine)을 포함하고 있지 않다는 건데...

 

그냥 폰트에셋을 다시 만드는게 좋다.

 

유니티 - window - TextMeshPro - font asset creator 클릭

 

위처럼 필요에 따라 대충 세팅. 영어와 숫자만 쓸거면 ASCII 문자셋으로 하고 렌더모드는 화질과 관련있는듯.. 직접 테스트해볼 것 (참고: 아스키 코드에도 밑줄underline이 포함되어 있다)

Generate font atlas 클릭 - Save as - 원하는 이름 정하고 저장

 

폰트에셋 만드는 법을 모르면 구글링으로 간단하게 알아보고 해도 좋다

 

빨간네모처럼 내가만든 폰트에셋을 textmeshpro 오브젝트 안에 넣어주기

 

결과인데 위처럼 나와서 기존의 검은 outline 이 사라짐. 고쳐보자

TMP 적용 오브젝트 클릭 - 아래부분에 머티리얼 - Shader 부분을 빨간 네모처럼 Mobile 경로안의 distance Field로 바꿔준다 (기본 폰트에셋에 이거였는데 새로 생성하면 mobile 경로가 빠지더라. 이유는 모름)

 

그럼 outline 체크 활성화됨 - 체크해주고 Face와 Outline 세팅을 네모같이 기본에셋의 수치로 맞춰주면 검은 테두리 복구 성공!

 

 

별거 아닌데 검색해도 안나와서 짜증.. 나던 찰나에 아래블로그에서 도움받아 해결

이렇게 폰트 만들기에도 익숙해지고 하는거지 뭐

 

https://www.create-forever.games/the-character-used-for-underline-is-not-available-in-font-asset/

 

The character used for Underline is not available in font asset [FONTNAME]. | Unity Indies

例えば数字だけのフォントを作成し、それを使用するとこんな警告が出ることがあります。 The character used for Underline is not available in font asset [FONTNAME]. この警告を消したい場合、2通りの方法

www.create-forever.games

 

 

유니티는 피벗 회전 처리하기가 까다로운것 같다.

캐주얼 게임에 쓰일법한 상자 굴리기는 과연 어떻게 만드는걸까?

 

부모 오브젝트를 이용한 피벗회전을 이용하면 되지만, 90도 한번만 굴리는게 아닌

지속적으로 굴리는건 어떻게 할까 궁금해져서 구현해봤다.

 

자식 cube의 원하는 방향의 아랫쪽 모서리에 새로운 gameobject 를 만들어 위치시키고 자식cube의 부모로 setParent() 해준다. 그리고 Dotween으로 부모를 굴려주면 끝. 그리고 항상 기존의 피벗인 부모는 삭제시킨다.

깔끔하게 해결되었다.

 

https://github.com/nectar3/CubeRotateTurn

 

GitHub - nectar3/CubeRotateTurn: d

d. Contribute to nectar3/CubeRotateTurn development by creating an account on GitHub.

github.com

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;


public class Rotation : MonoBehaviour
{
    public float rotSpeed = 1f;

    private Transform parent;
    float cubeHalf = 0.5f;

    bool turning = false;

    private void Start()
    {
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.D))
        {
            TurnToX(1);
        }
        else if (Input.GetKeyDown(KeyCode.A))
        {
            TurnToX(-1);
        }
        else if (Input.GetKeyDown(KeyCode.W))
        {
            TurnToZ(1);
        }
        else if (Input.GetKeyDown(KeyCode.S))
        {
            TurnToZ(-1);
        }
    }

    void TurnToX(int right)
    {
        if (turning) return;
        turning = true;
        DestroyParent();
        GameObject go = new GameObject("Pivot_parent");
        parent = go.transform;
        parent.position = new Vector3(transform.position.x + cubeHalf * right, transform.position.y + -cubeHalf, transform.position.z);
        this.transform.SetParent(parent);
        parent.DORotate(new Vector3(0f, 0f, -90f * right), 0.3f)
            .SetEase(Ease.Linear)
            .OnComplete(() => turning = false);
    }
    void TurnToZ(int forward)
    {
        if (turning) return;
        turning = true;
        DestroyParent();
        GameObject go = new GameObject("Pivot_parent");
        parent = go.transform;
        parent.position = new Vector3(transform.position.x, transform.position.y + -cubeHalf, transform.position.z + cubeHalf * forward);
        this.transform.SetParent(parent);
        parent.DORotate(new Vector3(90f * forward, 0f, 0f), 0.3f)
            .SetEase(Ease.Linear)
            .OnComplete(() => turning = false);
    }

    void DestroyParent()
    {
        if (parent)
        {
            this.transform.SetParent(null);
            Destroy(parent.gameObject);
        }
    }
}

 

 

 

unity

 

이 미친 두트윈 하.. 

 

onComplete 을 OnComplete 으로 바꾸면 해결된다.

 

대소문자땜에 이 고생 해야겠니? 

 

 

 

https://www.youtube.com/watch?v=Mmb-j-Vg2Qs 

 

 

5min 게임즈의 brickscape를 보고 따라해봤다. 콜라이더 충돌처리하는것부터 회전하는것까지 전부 어려웠으나, 매일 조금씩이나마 진행시켜 대충 완성했다. 

 

아쉬운 점

raytracing을 box로 안하고 직선으로만 해서 겹치는게 처리 안될듯..

블럭을 일일이 수작업으로 배치해야 한다는점.

정수단위 위치로 고정이 안된다는점

블럭 옮길때 카메라가 살짝 움직이는 것(귀찮아서 안고침)

 

만드는 과정에서 자꾸 막혀서 짜증이 났지만 완성 후 bloom 맥이니까 때깔이 좋아서 만족스럽다.

 

 

 

 

 

 

https://github.com/nectar3/Brickscape_clone

 

GitHub - nectar3/Brickscape_clone

Contribute to nectar3/Brickscape_clone development by creating an account on GitHub.

github.com

 

 

VS2019 기준이지만 이후 버전도 같은 기능이 있으므로 비슷하게 찾아서 하면됨

 

매번 Debug.log() 쓰는데 신물이 나셨다고요? 

존나 많이쓰는데 유니티놈들은 이거하나 심플하게 못만들어서 화나십니까?

vs code는 있는데 vs community 는 지원 안하는거 같아서 억울하십니까?

 

여기 해결책이 있습니다!

 

1. 해당 경로에 첨부된 스니펫 파일을 넣습니다( 유저마다 다를수 있음)

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC#\Snippets\1042\Visual C#

 

2. vs2019 도구->코드조각 관리자(영어로는 snippets 어쩌고) -> 가져오기 해서 위 폴더의 스니펫을 추가해줍니다

 

3. 에디터로 돌아와서 lg 쓰고 탭 두번 누르면 짜자잔~ 인생 존나 편해지는 소리 들리시나요? 축하드립니다.

 

* 추가: snippet 파일을 메모장으로 까보면 <header> 아래 <Shortcut> 부분 있죠? 그거 원하는대로 바꾸시면 단축어 변경됩니다! lg 말고 꼴리는 대로 넣으세요!

 

***추가:  윈도우 권한이 없어서 스니펫 파일 수정이 안되는 경우

- 파일을 권한없는 곳으로 복사(ex 바탕화면) 하고 수정한 다음, vs 스니펫 경로로 복붙하면 된다.

 

debuglog.snippet
0.00MB

 

 

 

 

참조: http://ekhart.pl/index.php/2017/06/26/visual-studio-unity-debug-log-snippet/

IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerDownHandler

등을 상속받은 후 OnDrag 등 메서드를 구현해도 오브젝트 클릭시 호출이안되는 경우가 있다.

 

 

1. 메인카메라에 Physics Raycaster 컴포넌트를 추가하면 된다.
2. 각 GameObject엔 콜라이더가 있어야한다. 

이유는 모르겠지만 잘 호출된다. UI에 쓴 경우는 Physics Raycaster 없이도 잘 호출되지만 GameObject에 쓰는경우는 추가해야 하는듯.

 

메인카메라에 컴포넌트 추가

 

 

마우스 드래그에 따라 오브젝트 움직이는 코드

 

본인 아이폰11과 미밴드4 페어링을 시도해봤다.

공장초기화 후 페어링하세요 라는 메시지만 계속 뜨고 죽어도 안되는 것이었다.

공장초기화 메뉴가 안뜬다고 색희들아...

미치고 팔짝 뛸 노릇이었고, 멀쩡한걸 버려야하나 생각했었다.

 

그래서 예전에 페어링했던 아이폰8을 가져와 임시로 페어링해 쓰다가, 

혹시나 하는 마음에 공장초기화를 한 후 아이폰11에 페어링해봤다. 

 

이게 되네? ㅋㅋㅋ

 

결론) 다른 폰으로 페어링해서 공장초기화 시킨 후 원하는 폰으로 페어링 시도하면 된다

 

 

윈도우10 탐색기 검색창에 특정 확장자 검색했는데 파일이름도 검색되서 나오는 경우 빡이 친다.

해결책은 아주 쉽다.

 

*.jpg

*.txt

*.png

*.hwp

파일탐색기 검색창에 이런식으로 별*에 .확장자 형식으로 검색하면 된다 (*.확장자) 

 

별* 은 와일드카드라고 불리는데 어떤 문자가 들어와도 된다는 뜻이다.

*.wav 인 경우 .wav로 확장자인 모든 파일을 잡아내겠다는 의미

 

 

아 너무쉽다~

 

 

Candy Cruch sage clone project for practice

 

https://www.youtube.com/watch?v=m5Uq20I8Q5o 

 

https://github.com/nectar3/CandyCrush1

 

GitHub - nectar3/CandyCrush1: dd

dd. Contribute to nectar3/CandyCrush1 development by creating an account on GitHub.

github.com

 

아래 블로그를 참고하여 테트리스보다는 단순한 방식으로 구현.

캔디 내리는 코드(FillBlank() ) 는 블로그와 다른 방식으로 구현함

 

참고: https://gamedevelopertips.com/create-candy-crush-clone/

 

candy sprites: https://www.nicepng.com/ourpic/u2r5r5r5t4a9t4o0_download-candy-crush-saga-sprites-clipart-candy-crush/

 

 

vs2019, vs2022 둘다 적용됨

 

깃헙에 푸쉬했을때나, 유니티 인스펙터창(inspector) 에서 비주얼 스튜디오로 작성한 한글주석이 깨지는 경우가 있다.

 

이때 루트 디렉토리(.sln 파일 있는곳)에 .editorconfig 라는 이름의 파일을 만든후 본문을 아래와 같이 해주고 저장.

 

인코딩이 utf-8으로 지정된다. 이후 꼭 한번씩 해당 스크립트(.cs)를 변경 후 저장해야 적용된다.

본문에 스페이스바 한번 누르고 저장후 유니티 컴파일 한번 해주면 한글이 잘 뜨는걸 볼수있다.

 

[*]
charset = utf-8-bom

 

메모장에 붙여넣고 저장- 파일형식- 모든파일- 파일명 .editorconfig으로한 후 저장. 위의 루트 디렉토리에 배치하면 vs2019 에서 자동인식하여 확인창이 뜨는데 예 누르면 된다. 2022는 따로 확인창이 안뜨지만 자동으로 되는듯?

 

 

 

https://www.youtube.com/watch?v=wpvUaMrf1CI 

https://github.com/nectar3/Tetris1

 

GitHub - nectar3/Tetris1: dd

dd. Contribute to nectar3/Tetris1 development by creating an account on GitHub.

github.com

 

 

예전에 게임개발자라면 '이정돈 만들줄 알아야지'라는 말을 듣고 섣불리 도전했다가 멘붕와서 포기했던 테트리스..

Grid 관리도 해야하고 의외로 신경써야할 규칙들이 많아서(사실 실력부족) 쉽진 않다고 느낀다.

이번 도전에서도 중간에 걍 포기할까 하는 위기가 한차례 있었지만 빡침을 가라앉히고 작은 기능에 집중하면서 진행하다보니 결국 완성하게 되었다.

 

Block 은  테트리미노. Dot 은 테트리미노를 구성하는 정사각형으로 두고 구조를 만들었다.

블럭 회전은 block의 child인 dot 들의 local position 에 쿼터니언 회전을 주어서 해결했다(구글링이 살렸다!) 

 

아래처럼 vector3 에 해당 쿼터니언을 곱하면 0,0 기준으로 회전이 된다.

var loc = Quaternion.Euler(0, 0, -90) * dots[i].transform.localPosition;

 

항상 느끼지만 Grid가 들어오는 순간 복잡해진다ㅜㅠ

어쨌든 완성하고나니 뿌듯하다. 

 

 

 

모바일 인기게임 Lumbercraft 연습용 카피

유료 애셋이 들어가 github은 비공개로 했음

 

https://www.youtube.com/watch?v=EofjZD8gpCU 

 

 

HP bar 참조

https://www.youtube.com/watch?v=MO_XEHGzDLM&t=1367s 

 

 

 

에디터상에서 어떤 오브젝트를 클릭하면 최상단 부모가 선택되는게 아니라

팔, 다리, 몸통같은 자식오브젝트만 선택되어 매우불편할 때가 있다. Hierarchy 하위목록 열린거 닫고 다시 부모 선택하고 노가다 반복하다가 찾아보니 좋은 수단이 있더라.

 

1. 부모 오브젝트에 스크립트를 추가하거나 기존 스크립트를 연다
2. class 위에 [SelectionBase] 추가해준다.
3. 끝

 

에디터창에서 선택해보면 부모만 선택되는걸 알수있다.

 

마찬가지로 한 오브젝트의 특정 child가 우선선택되게 하고싶을 때도, 그 child 객체의 스크립트에 selectionBase 추가해주면 된다.

 

 

 

 

 

https://www.youtube.com/watch?v=aWn45mnJ98E&t=175s 

 

 

 

https://github.com/nectar3/RhythmGO_clone/tree/main

 

GitHub - nectar3/RhythmGO_clone: RhythmGO_clone

RhythmGO_clone. Contribute to nectar3/RhythmGO_clone development by creating an account on GitHub.

github.com

 

 

한때 엄청난 인기를 끌었던 캐주얼 게임 Pop the lock을 연습삼아 만들어봄

아래에 깃헙 참조

 

 

https://github.com/nectar3/Pop_the_lock_clone/tree/main

 

GitHub - nectar3/Pop_the_lock_clone: Pop_the_lock_clone

Pop_the_lock_clone. Contribute to nectar3/Pop_the_lock_clone development by creating an account on GitHub.

github.com

 

 

 

https://github.com/nectar3/flappyBird

 

GitHub - nectar3/flappyBird: flappyBird copy for training

flappyBird copy for training. Contribute to nectar3/flappyBird development by creating an account on GitHub.

github.com

 

flappy bird 연습용으로 만든 전체 프로젝트와 애셋

 

hole Y 위치를 랜덤하게 정하고 위아래 파이프 위치를 랜덤 간격(gap)으로 지정해주는 방식

 

 

사용 애셋 

 

https://github.com/samuelcust/flappy-bird-assets

 

GitHub - samuelcust/flappy-bird-assets: Assets to develop the Flappy Bird Game

Assets to develop the Flappy Bird Game. Contribute to samuelcust/flappy-bird-assets development by creating an account on GitHub.

github.com

 

 

https://github.com/nectar3/Anim_state_monsterLoveFSM

 

GitHub - nectar3/Anim_state_monsterLoveFSM: 유튜버 Dev GomDol님 튜토리얼을 MonsterLove FSM 으로 변환한 유니티

유튜버 Dev GomDol님 튜토리얼을 MonsterLove FSM 으로 변환한 유니티 프로젝트(unity) - GitHub - nectar3/Anim_state_monsterLoveFSM: 유튜버 Dev GomDol님 튜토리얼을 MonsterLove FSM 으로 변환한 유니티 프로젝트(unity)

github.com

 

 

유튜버 Dev GomDol님 튜토리얼을 MonsterLove FSM 으로 변환한 유니티 프로젝트

Dev GomDol유튜브 https://www.youtube.com/watch?v=MowE3moQ_Cw

Monster love FSM(Simple Finite State Machine for Unity (C#)) https://github.com/thefuntastic/Unity3d-Finite-State-Machine

 

 

애니메이션 state 스크립트를 별도로 만들지 않고 enemy 스크립트 하나에 상태를 전부 넣을 수 있어 심플해짐

 

 

 

 

<트랜서핑 현실의 지배자> 발췌

 

가끔 컴터 재부팅, 관리 들어가서 오프라인 설정, 또 뭘 하든간에 안전제거가 안돼서 미치고 팔짝 뛸 때가 있다.

이 장치는 현재 사용 중입니다. 또는 제거할수 없습니다 메시지가 뜨면서 말이다.

 

해결책,

백신의 USB 자동검사 옵션을 끄도록한다.

 

외장하드는 보통 용량이 큰데 usb 바이러스 자동검사 옵션이 켜져있으면 

연결시마다 검사를 하느라 상당히 많은 시간이 걸리고, 강제로 중지하지 않는이상 안전제거 옵션이 안먹히게 된다.

16기가 등의 "진짜 USB"는 검사가 금방 끝나겠지만 외장하드는 문제가 된다.

 

 

1. 윈도우10 기본백신  쓰는경우-(윈도우보안, 윈도우 디펜더)

 

1. 윈도우 왼쪽 아래 돋보기 버튼 -> powershell 검색 후 마우스 우클릭 -> 관리자 권한으로 실행

-> 파란 창이 뜨면 아래 내용 입력

Set-MpPreference -DisableArchiveScanning 1

다시 안전하게 장치 꺼내기 시도하면 성공!

 

USB 자동검사 기능을 끄는거라 다시 키고 싶으면 1을 0으로 바꿔서 재입력한다

Set-MpPreference -DisableArchiveScanning 1

 

 

2. Avast 백신을 쓰는경우

 

우측 위 메뉴-> 설정 -> 보호 -> 핵심 실드 -> 이동식 미디어 자동 검사 체크 해제한다.

 

잘 쓰던중 가끔가다가 와이파이 연결 됏음에도 프린터가 오프라인이라고 뜰 때가 있어서

심히 짜증과 욕을 유발하곤 한다. 아주 심플한 해결법을 알아내어 공유한다.

 

 

 

www.samsungsetup.com/TS/Client/SPD/KR/Pop.html

 

위 주소(삼성전자 서비스센터)에서 진단 프로그램 설치 후 실행

-> 프린터 진단 -> 네트워크로 연결 -> 검색 후 선택 후 드라이버 설치 -> 테스트페이지 인쇄 -> 해결

 

위 주소에서 프린터 진단실행 안뜨는 경우

www.samsungsvc.co.kr/online/diagnosisgoVw.do?domainId=NODE0000033866&node_Id=NODE0000125044&kb_Id=KNOW0000029901

여기가서 링크 찾아봐라.

 

 

키움 영웅문 수식에서 분봉상 날짜가 바뀌는 경우 값을 리셋하고 다시 계산해야할 때가 있다.

예를들어 당일 분봉 거래대금 합산을 구하는 아래 수식을 보자

M = sum(((L+H+O+C)/4)*V/100000000); 
Old = valueWhen(1, date(1)!=date, M(1)); 
M - Old

valueWhen(조건만족 n번째봉, 조건, 값)

 

현재분봉(가장 최근 분봉)의 날짜와 다른 부분의 수식값이 곧 어제까지의 값이다.

이 값을 Old라고 하자( 여기서 M(1)는 하루전 값이다. 오늘값은 M(0) 또는 괄호생략하여 M)

 

"모든날짜 대금합 - 어제까지의 대금합" 으로 오늘의 대금을 따로 구할수 있다.

 

[보충]: 이 부분을 다시 설명해보면,

과거분봉-> 미래분봉 방향으로 거래대금을 더해가다가,

현재current분봉의 날짜가 바로 전 분봉의 날짜와 다르면, M(1) 즉 전 분봉까지의 대금합을 빼겠다는 의미로 보는게 맞을듯함.

 

 

번째 케이스,

최근 분봉 30개의 상승률을 구하고 싶은데, 어제의 분봉은 제외하고 싶을때,

start = if(date(30)!=date, DayOpen(), c(30));
d = h(0) - start;
d / start * 100;

if(조건, 참일때 값, 거짓일 때 값)

 

date(30) 은 30개 전 봉의 날짜.

즉, date(30)이 현재봉의 날짜와 다른경우 오늘의 시가(dayOpen)로 기준을 잡겠다는 의미이다.

30개 전 분봉도 오늘것이면, 30개 전의 종가를 기준으로 잡게된다.

 

위와같이 date 변수를 사용해서 분봉에서도 날짜의 변화를 적용할 수 있다.

 

 

 

웹브라우저가 포함된 Form을 스레드 안에서 Show() 하면 아래 예외가 발생한다.

 

System.Threading.ThreadStateException: '현재 스레드가 단일 스레드 아파트에 없으므로 ActiveX 컨트롤.. 어쩌고

 

 

이때는 f.Show() 구문을 Invoke()로 감싸준다.

 

this.Invoke((MethodInvoker)(() => 
{ 
	FormTest f = new FormTest(); 
	f.Show(); 
}));	

여기서 this는 부모폼을 가리킴.

+ Recent posts